|
|
1
2
您可能在Linux上,那里的默认分配器很好(我在Windows上进行了基准测试,将分配器替换为
这是因为数组版本需要对每个元素进行边界检查,这会阻止向量化并增加开销。但他们不必这样做:如果我们制作参数数组而不是切片,那么边界检查就会消失。
如果只有切片,则可以使用将它们转换为数组
另一种选择是使用
基准
因此,使用数组而不是切片的版本与
另一种选择是帮助LLVM消除绑定检查。它在这里有问题,因为你按递增顺序索引:我们检查索引0,但这对索引1没有任何意义,所以我们也检查它,然后是2,然后是3……但如果我们先检查最后一个索引,LLVM知道以前的所有索引也存在:
这使此代码与数组版本不相上下:
|
|
|
2
0
一个可能更好的版本是:
|
|
|
theflash · 将已知大小的切片在铁锈中组合成一个阵列 2 年前 |
|
|
Josep Pueyo · 如何优化向量的以下条件赋值? 2 年前 |
|
|
Community wiki · C中有哪些耗时的操作? 2 年前 |