「System.Numericsは速い」の版間の差分
ナビゲーションに移動
検索に移動
Administrator (トーク | 投稿記録) |
Administrator (トーク | 投稿記録) (→備考) |
||
(同じ利用者による、間の1版が非表示) | |||
3行目: | 3行目: | ||
System.Numericsの[[ソースコード]]は公開されているので比較してみたが、そんなに速度差がでるはずがない。どちらも超シンプルなソースコードだし。 | System.Numericsの[[ソースコード]]は公開されているので比較してみたが、そんなに速度差がでるはずがない。どちらも超シンプルなソースコードだし。 | ||
− | * https://github.com/microsoft/referencesource/ | + | *https://github.com/microsoft/referencesource/ |
もしかしてSystem.Numericsは[[.NET]]の[[ランタイム]]で特殊な[[アクセラレーション]]が掛かっているのではということで検証してみた。 | もしかしてSystem.Numericsは[[.NET]]の[[ランタイム]]で特殊な[[アクセラレーション]]が掛かっているのではということで検証してみた。 | ||
28行目: | 28行目: | ||
;Debug | ;Debug | ||
+ | |||
*前者:14.149秒 | *前者:14.149秒 | ||
*後者:82.284秒 | *後者:82.284秒 | ||
;Release | ;Release | ||
+ | |||
*前者:0.903秒 | *前者:0.903秒 | ||
*後者:3.418秒 | *後者:3.418秒 | ||
− | |||
− | |||
− | |||
==結論== | ==結論== | ||
42行目: | 41行目: | ||
めっちゃ加速されてた。 | めっちゃ加速されてた。 | ||
+ | |||
+ | == 備考 == | ||
+ | [[AQUOS sense2 SH-01L]]と[[Xamarin.Android]]でも試してみたが、System.Numericsの方が2倍くらい速い。 |
2022年5月27日 (金) 06:02時点における最新版
「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倍くらい速い。