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。