类方法VS类静态函数VS简单函数 - 性能方面?

Dr.*_*eon 11 c c++ macos class clang

好的,这就是我想要的:

  • 我已经写了几个非常苛刻的函数(主要是在位图上运行等),它们必须尽可能快
  • 现在,我们还要提到这些函数也可以按类型分组,甚至可以按它们运行的​​变量类型分组.
  • 事实上,除了算法的实现之外,我应该做什么 - 从技术角度来看 - 以免扰乱速度.

现在,我正在考虑以下场景:

  • 将它们创建为简单函数,并将必要参数作为参数传递
  • 创建一个类(用于"分组"/组织目的)并将它们声明为静态
  • 按类型创建类,例如,创建一个用于处理位图的类,为每个位图创建该类的新实例(例如Bitmap* myBitmap = newBitmap(1010);,并使用其内部方法对其进行操作(例如myBitmap->getFirstBitSet())

现在,哪种方法最快?直接简单函数和类封装static函数之间是否真的有任何区别,性能方面呢?我还没有提到的任何其他情况更可取?


旁注:我正在使用clang++编译器,适用于Mac OS X 10.6.8.(如果这有任何区别)

Mat*_* M. 19

在CPU级别,只有一种功能,它非常重新组合C类.你可以自己制作,但......

事实证明,C++正在高效构建,将大多数函数直接映射到调用指令:

  • 命名空间级别函数就像常规C函数
  • 静态方法就像命名空间级别函数(从调用的角度来看)
  • 非静态方法与静态方法非常相似,除了this在其他参数(一个指针)之上传递隐式参数

所有这3个都具有完全相同的性能.

另一方面,virtual方法有轻微的开销.有一个关于性能的C++技术报告,估计与非虚拟方法相比,函数的开销在10%到15%之间(来自内存).意味着对于内部有肉的任何功能(即,做实际工作),开销本身就接近于在噪音中迷失.除非virtual可以在编译时推断出调用,否则实际成本来自内联的禁止.