「System.Numericsは速い」の版間の差分
ナビゲーションに移動
検索に移動
Administrator (トーク | 投稿記録) (ページの作成:「「System.NumericsにはMatrix3x3」がないという理由で作っている自作のNumericsなライブラリとSystem.NumericsのVector3の速度比較を行っ…」) |
Administrator (トーク | 投稿記録) |
||
28行目: | 28行目: | ||
;Debug | ;Debug | ||
− | |||
*前者:14.149秒 | *前者:14.149秒 | ||
*後者:82.284秒 | *後者:82.284秒 | ||
;Release | ;Release | ||
− | |||
*前者:0.903秒 | *前者:0.903秒 | ||
*後者:3.418秒 | *後者:3.418秒 | ||
+ | |||
+ | === 備考 === | ||
+ | AQUOS sense2 SH-01LとXamarin.Androidでも試してみたが、System.Numericsの方が2倍くらい速い。 | ||
==結論== | ==結論== |
2020年5月25日 (月) 06:54時点における版
「System.NumericsにはMatrix3x3」がないという理由で作っている自作のNumericsなライブラリとSystem.NumericsのVector3の速度比較を行ったところ、絶望的などほど自作の方が遅かった。ざっくり8倍くらい遅い。
System.Numericsのソースコードは公開されているので比較してみたが、そんなに速度差がでるはずがない。どちらも超シンプルなソースコードだし。
もしかしてSystem.Numericsは.NETのランタイムで特殊なアクセラレーションが掛かっているのではということで検証してみた。
条件
比較対象
- System.Numerics
- System.Numericsのソースコードの名前空間を書き換えたもの
検証機材
- Mac mini (2018)
- 3.2 GHz 6コアIntel Core i7
- 16 GB 2667 MHz DDR4
- macOS Catalina 10.15.4
- .NET Core 3.1 (Console)
検証
以下を10億回ループ
var x = new Vector3(a); var y = new Vector3(b); var z = new Vector3(c+1); return (x * y / z).Length();
- Debug
- 前者:14.149秒
- 後者:82.284秒
- Release
- 前者:0.903秒
- 後者:3.418秒
備考
AQUOS sense2 SH-01LとXamarin.Androidでも試してみたが、System.Numericsの方が2倍くらい速い。
結論
両者は同じものであるはずだが、前者の方が圧倒的に速い。
めっちゃ加速されてた。