结构体的函数越多会越慢吗?

突然想到一个问题,为项目里面的结构体都加上同一的方法,比如各种求和、排序、序列化…………,最终为每个结构体都加了上百个方法,最后使用的时候对于整个程序性能有影响吗?

PS:不考虑设计问题,只考虑问题本身。

已邀请:

Xargin

赞同来自: DDY

不会

lrita

赞同来自:

当然会,添加大量无用的代码,直接导致代码段的膨胀,从而导致icache和iTBL的miss增加。

最终都会反映到程序性能上。

比如 https://www.scylladb.com/2017/07/06/scyllas-approach-improve-performance-cpu-bound-workloads/

当然一般程序都不太需要关心这些。

当然我也不太清楚icache填充的规则,临近的代码,没有被被调用时,会不会填充到icache中。

pathbox - https://pathbox.github.io/

赞同来自:

上百个,有点多。。。

simple - 既要有梦想,又要有实力

赞同来自:

  1. 尽量减少,让类(结构体)符合单一职责原则。
  2. 会不会对性能做影响,自己做个benchmark不就知道了。

Xargin

赞同来自:

都想太多了吧 函数在结构体上本质就是

func aaa(rec receiver, a param1, b param2) {}

调用的时候就是 CALL rec.aaa,CALL 的本质就是个类似 jmp 的指令而已。。。结构体里有1个函数和100个函数有区别么

当然,结构体里有自己的数据要用的话那肯定会慢

要回复问题请先登录注册