在我的项目中,我有一个以执行时间为首要目标的课程。对于它我不太关心维护,订单等。至少我直到昨天才在意……现在我也不得不有点担心了。
我有一个类,比如 A,它对来自相机的图像执行多次扫描,即可变宽度窗口实时扫描它们。
class A{
// methods and attributes of A:
...
void runiterator(){
...
for{ // change window’s dimension
for{ // rows
for{ // columns
// many lines of code of operations to be executed for each window at each position
...
}
}
}
}
};
性能显示已经有一点延迟,但我可以跳过图像的有限区域来解决它。此外,我还有第二个函数,比如 B,它具有与 A 完全相同的方案,并且在每次扫描时执行不同的操作(幸运的是比 A 快得多)。
好吧,现在是时候加入所有操作以显着受益于整体结果。只是代码真的会变得混乱,庞大并且混合了真正不同的东西。我想定义一个执行迭代的类 X,并在每次扫描时执行对 A_new 中的一个函数和 B_new 中的一个函数的函数调用。但我担心每个图像大约 200000x2 的函数调用会导致性能损失。
你有什么建议?
编辑
对于只调用 Anew 的 X 类(所以它只能与现在的 A 进行比较),平均而言,我得到了多次重复:
在一系列 56 个图像上执行 X 的
时间 = 6.15 s 在同一系列 56 个图像上执行 A 的时间 = 5.98 s
看来我的嫌疑人并没有那么天真。
差价大约是3%,不算多,但还是对损失感到抱歉。
X 的 __forceinline 时间也是 5.98 秒,但我不想依赖它。
我认为代码已经过优化,进一步改进的余地很小。
事实上,它在相对较短的时间内对图像做了很多事情。
在 A 类中顺序处理数据是不可能的,因为它基于来自无法预测的图像的值。这就是为什么 B 级(设法做到这一点)要快得多的原因。