ユーザ用ツール

サイト用ツール


benchmark

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
benchmark [2023/01/22 04:56] – [感想] machiaworxbenchmark [2026/09/23 11:54] (現在) – machiaworx
行 1: 行 1:
 ====== ベンチマークその1(フィボナッチ数列の計算) ====== ====== ベンチマークその1(フィボナッチ数列の計算) ======
  
-ちょっと意見いただいたのもあり、ベンチマークを適当に書いてみることにしました。+ちょっと意見いただいたのもあり、ベンチマークを適当に書いてみることにしました。\\  
 +2026/9/23追記:MiniScript2公開間近なので、MiniScript2についてもベンチマーク取ってみました。
  
 ==== 諸注意 ==== ==== 諸注意 ====
  
 今回の結果は管理人の環境における結果で、他の環境やOSだと変わる要因があるかもしれません。 今回の結果は管理人の環境における結果で、他の環境やOSだと変わる要因があるかもしれません。
- 
 よって、参考程度とお考えください。 よって、参考程度とお考えください。
  
行 21: 行 21:
   * Squirrel3.1stable   * Squirrel3.1stable
   * Miniscript1.5.1   * Miniscript1.5.1
 +  * MiniScript2.0-fc1
  
 ==== 内容 ==== ==== 内容 ====
行 35: 行 36:
   Squirrel:13sec(ms単位で計測できない)   Squirrel:13sec(ms単位で計測できない)
   Miniscript:計測不能(結果が帰ってこない)   Miniscript:計測不能(結果が帰ってこない)
 +  MiniScript2:59.62232sec
  
   速度:   速度:
-  Lua > Ruby >  Python >= Squirrel(Pythonとの差は微量かも) >>>>>>>>>>>> Miniscript+  Lua > Ruby >  Python >= Squirrel(Pythonとの差は微量かも)>MiniScript2 >>>>>>>>>>>> Miniscript
      
 ==== 感想 ==== ==== 感想 ====
行 62: 行 64:
 ---- ----
  
-また、そもそもベンチマークに使ったアルゴリズムは無茶苦茶な量の計算になるので、現実問題としてスクリプト側でやらせるようなやつではないとも考えます。+そもそもベンチマークに使ったアルゴリズムは無茶苦茶な量の計算になるので、現実問題としてスクリプト側でやらせるようなやつではないとも考えます。
  
 (どういう使い方が最適なのか、方針を立てるというのもベンチマークの目的であると考えますし) (どういう使い方が最適なのか、方針を立てるというのもベンチマークの目的であると考えますし)
行 68: 行 70:
 日常的なバッチレベルのものだったり他のソフトに投げる程度であれば使うのは有効だけど、Miniscript単体で大量に計算するものだと避けるのは無難って感じだと思います。 日常的なバッチレベルのものだったり他のソフトに投げる程度であれば使うのは有効だけど、Miniscript単体で大量に計算するものだと避けるのは無難って感じだと思います。
  
-ただ、その計算もフィボナッチ数列に匹敵するレベルでなけれ問題ないのはわかったので、言語使う際の方針を立てやすくなったと考えます。+ただ、その計算もフィボナッチ数列に匹敵するレベルでなければ問題ないのはわかったので、言語使う際の方針を立てやすくなったと考えます。
  
 基本方針は以下の通りかと。 基本方針は以下の通りかと。
行 77: 行 79:
 管理人のゲーム開発で使う際は以下の基準で利用しています。 管理人のゲーム開発で使う際は以下の基準で利用しています。
  
-  * 基本的にはフィボナッチ配列のようにスクリプト上で大量に計算させる処理は避ける(組込関数で実装する等)+  * 基本的にはフィボナッチ数列のようにスクリプト上で大量に計算させる処理は避ける(組込関数で実装する等)
   * スクリプトを読むオブジェクトのしきい値は50個を基準にする(うちの環境だとEditor上で問題なく動く基準。本来ならもっと動かせると思うしGPU周りの要因もあるけど。)   * スクリプトを読むオブジェクトのしきい値は50個を基準にする(うちの環境だとEditor上で問題なく動く基準。本来ならもっと動かせると思うしGPU周りの要因もあるけど。)
   * 大量のオブジェクトを動かす場合(1000個程度)ベース言語側で対応する   * 大量のオブジェクトを動かす場合(1000個程度)ベース言語側で対応する
行 101: 行 103:
 ==== 当記事の結論 ==== ==== 当記事の結論 ====
  
-管理人の環境では、Miniscriptは数値計算のベンチマークはとっても遅い。+管理人の環境では、Miniscriptは再帰的な数値計算のベンチマークはとっても遅い。
  
 ただ、アルゴリズムの改造で遅さをカバー可能。 ただ、アルゴリズムの改造で遅さをカバー可能。
  
 (おそらく実装された記法やリスト・マップの柔軟さに重きを置いてるのかなあと思ったりする。Pythonに近い方向性というか) (おそらく実装された記法やリスト・マップの柔軟さに重きを置いてるのかなあと思ったりする。Pythonに近い方向性というか)
 +
  
 ===== ソースコード ===== ===== ソースコード =====
行 164: 行 167:
   print(time()-a)   print(time()-a)
  
-==== Miniscript ====+==== Miniscript(1と2は共通) ====
  
   fib=function(n=0)   fib=function(n=0)
benchmark.1674331013.txt.gz · 最終更新: 2023/01/22 04:56 by machiaworx