![]() |
1
2
根据您所处的平台,编译器可能能够优化如下语句
使用FSEL( floating point select )指示或有条件的移动。就个人而言,我认为代码看起来也更漂亮、更简洁,但这是主观的。 如果代码确实是性能关键的,并且您不介意将向量类更改为4个浮点而不是3个浮点,那么您可以使用simd(如Intel平台上的sse、PowerPC上的vmx)进行比较并选择答案。如果你继续这样做,它会是这样的:(伪代码)
这需要一段时间来适应,而且它最初的可读性可能会降低,但最终会习惯于在simd模式下思考。 当然,通常的注意事项是适用的——在分析之前不要优化,等等。 |
![]() |
2
1
如果向量元素是int,则可以执行以下操作:
(注意,这处理==0大小写的方式不同,不确定您是否在意) 如果你的向量元素是双精度的而不是整数,你可以做一些类似的事情,比如符号位在同一个位置,你只需要转换成整数,做蒙版,然后再转换回来。 |
![]() |
3
1
如果您在源代码中寻找的是一个干净的表达式,而不是运行时优化,那么您可以考虑从“工具箱”的角度来解决这个问题。那么假设在myvector上你定义了
使用运算符重载:
为了灵感,这里是 MatLab function reference . 显然,有许多C++向量库可以从这些函数中选择。 如果分析显示有必要,您可以随时进入并进一步优化。但是,最大的性能问题往往是您如何看待全局并重用中间计算。 |
![]() |
4
0
由于您只进行减法运算,因此将按以下方式重写:
|
|
wavesinaroom · 断言结构向量长度 5 月前 |
![]() |
Amarth Gûl · 找到一组向量的最近收敛点 5 月前 |
![]() |
P_B · 如何从矩阵中减去均值向量 10 月前 |
![]() |
TheEagle · 根据迭代器的顺序向前或向后迭代 10 月前 |
![]() |
Mary Ann Moody · 如何创建一个包含2个元素的向量? 11 月前 |
![]() |
Chris · 如何在OpenSCAD中的FOR循环中成对创建矢量元素 1 年前 |