3个不稳定版本
0.1.0 | 2021年12月23日 |
---|---|
0.0.2 | 2021年12月23日 |
0.0.1 | 2021年12月13日 |
#1473 in 数学
66KB
2K SLoC
spaceform
一个用于3D渲染和仿真的库。
它的目标是易于使用、快速和灵活。
速度
操作 | cgmath |
spaceform simd |
spaceform 矢量 |
---|---|---|---|
矢量 + 矢量 | 0.45 ns | 0.23 ns | 0.45 ns |
矢量 - 矢量 | 0.45 ns | 0.23 ns | 0.45 ns |
矢量 * 矢量 | 0.45 ns | 0.23 ns | 0.45 ns |
矢量 / 矢量 | 0.45 ns | 0.23 ns | 0.45 ns |
矢量绝对值 | - | 0.23 ns | 0.45 ns |
矢量水平求和 | 0.22 ns | 0.22 ns | 0.22 ns |
矢量最小和最大值 | - | 0.23 ns | 0.45 ns |
矢量点积 | 0.23 ns | 0.23 ns | 0.23 ns |
矢量叉积 | 0.46 ns | 0.23 ns | 0.45 ns |
矢量 * 矩阵 | 5.5 ns | 0.22 ns | 0.45 ns |
矩阵 * 矩阵 | 24 ns | 0.95 ns | 2 ns |
矩阵转置 | 2 ns | 0.9 ns | 2 ns |
矩阵逆 | 12 ns | 0.95 ns | 2 ns |
四元数 * 四元数 | 0.45 ns | 0.23 ns | 0.45 ns |
在i7-4790K @ 4.6 Ghz的CPU上进行了基准测试。
在最坏的情况下,spaceform
与 cgmath
一样快。
对于矢量-矢量操作,spaceform
比约快两倍于 cgmath
。
对于矩阵操作,spaceform
远远快于 cgmath
。
在某些情况下,标量 spaceform
甚至比 cgmath
更快。
以下是 spaceform
的最坏情况,其中必须在每次操作之前从内存中加载数据。
操作 | cgmath |
spaceform simd |
spaceform 矢量 |
---|---|---|---|
矢量 + 矢量 | 1.8 ns | 0.5 ns | 1.8 ns |
矢量 - 矢量 | 1.8 ns | 0.5 ns | 1.8 ns |
矢量 * 矢量 | 1.8 ns | 0.5 ns | 1.8 ns |
矢量 / 矢量 | 1.8 ns | 1.7 ns | 6.2 ns |
矢量绝对值 | - | 0.5 ns | 1 ns |
矢量水平求和 | 1 ns | 0.65 ns | 1 ns |
矢量最小和最大值 | - | 0.6 ns | 0.9 ns |
矢量点积 | 2 ns | 0.9 ns | 2 ns |
矢量叉积 | 2.3 ns | 0.9 ns | 3.2 ns |
矢量 * 矩阵 | 5.5 ns | 1.5 ns | 4.8 ns |
矩阵 * 矩阵 | 30 ns | 4.7 ns | 19 ns |
矩阵转置 | 4.5 ns | 1.9 ns | 5.6 ns |
矩阵逆 | 22 ns | 11.8 ns | 30 ns |
四元数 * 四元数 | 0.45 ns | 0.23 ns | 0.45 ns |
spaceform
仍然通过SIMD打败了 cgmath
。