「System.Numericsは速い」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
(ページの作成:「「System.NumericsにはMatrix3x3」がないという理由で作っている自作のNumericsなライブラリとSystem.NumericsのVector3の速度比較を行っ…」)
 
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倍くらい速い。

結論

両者は同じものであるはずだが、前者の方が圧倒的に速い。

めっちゃ加速されてた。