【发布时间】:2012-12-02 04:10:00
【问题描述】:
好的,这就是我想要的:
- 我已经编写了几个要求非常高的函数(主要是在位图上操作等),它们必须尽可能快
- 现在,我们还要提一下,这些函数也可以按类型分组,甚至可以按它们所操作的变量的类型分组。
- 问题是,除了算法的实现之外,我应该做些什么 - 从技术角度来看 - 为了不影响速度。
现在,我正在考虑以下场景:
- 将它们创建为简单的函数,并将必要的参数作为参数传递
- 创建一个类(用于“分组”/组织目的)并将它们声明为静态
- 按类型创建类,例如创建一个用于处理位图的类,为每个位图创建一个该类的新实例(例如
Bitmap* myBitmap = newBitmap(1010);,并使用其内部方法对其进行操作(例如myBitmap->getFirstBitSet())
现在,哪种方法最快?在性能方面,直接简单函数和类封装static 函数之间真的有什么区别吗?还有其他我没有提到的更可取的方案吗?
旁注:我正在为 Mac OS X 10.6.8 使用 clang++ 编译器。 (如果这有什么不同的话)
【问题讨论】:
-
如果您真的关心性能,您应该在您的环境中分析您建议的两个版本。这样您可以获得一个很好的诊断,而不是仅仅猜测这里的答案会为您提供哪些。跨度>
-
@LuchianGrigore+AlokSave 老实说,不,我没有运行任何分析测试。是的,我知道有些事情最好根据它们应该运行的确切环境进行诊断;我想我需要对我的困境背后的一些理论提出一些意见,我可能会失踪。 (例如,即使我已经考虑过了,类创建和方法调用会比简单的函数调用更快吗?还在猜测……虽然我认为我猜对了……)跨度>
-
没有分析,如果你的成员是虚函数(或者如果你的类有虚函数),只有主要的性能成本才会出现
-
我会为可读性编写代码并将调用抽象出来,这样当您进行分析时,很容易更改和测试替代方案。