ユーザ用ツール

サイト用ツール


benchmark

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
benchmark [2023/01/22 04:52] machiaworxbenchmark [2023/06/12 09:43] (現在) – [感想] machiaworx
行 56: 行 56:
   > That's why it's one of the benchmarks in the benchmark suite.   > That's why it's one of the benchmarks in the benchmark suite.
  
-まずMiniscript自体のオーバーヘッドが非常に高くて、今回の実装におけるフィボナッチ列はそのオーバーヘッド高い状態でぶん回すわけだから、そりゃ負荷がべらぼうに高いわなと。(ワーストケースって言ってるし)+まずMiniscript自体のオーバーヘッドが非常に高くて、今回の実装におけるフィボナッチ列はそのオーバーヘッド高い状態でぶん回すわけだから、そりゃ負荷がべらぼうに高いわなと。(ワーストケースって言ってるし)
  
-簡単な対策としては、フィボナッチ列を組込関数にするか、基本的には再帰呼び出しを避けて書き下すアプローチが一番効率よさそう。 +簡単な対策としては、フィボナッチ列を組込関数にするか、基本的には再帰呼び出しを避けて書き下すアプローチが一番効率よさそう。
- +
-また、そもそものベンチマークに使ったアルゴリズムは無茶苦茶な量の計算になるので、これを本来スクリプト側でやらせるようなやつではないとも考えます+
  
 ---- ----
 +
 +そもそもベンチマークに使ったアルゴリズムは無茶苦茶な量の計算になるので、現実問題としてスクリプト側でやらせるようなやつではないとも考えます。
 +
 +(どういう使い方が最適なのか、方針を立てるというのもベンチマークの目的であると考えますし)
  
 日常的なバッチレベルのものだったり他のソフトに投げる程度であれば使うのは有効だけど、Miniscript単体で大量に計算するものだと避けるのは無難って感じだと思います。 日常的なバッチレベルのものだったり他のソフトに投げる程度であれば使うのは有効だけど、Miniscript単体で大量に計算するものだと避けるのは無難って感じだと思います。
  
-ただ、その計算も程度問題ないのはわかっているので、言語使う際の方針を立てやすくなったと考えます。+ただ、その計算もフィボナッチ数列に匹敵すレベルでければ問題ないのはわかっので、言語使う際の方針を立てやすくなったと考えます。
  
 基本方針は以下の通りかと。 基本方針は以下の通りかと。
行 75: 行 77:
 管理人のゲーム開発で使う際は以下の基準で利用しています。 管理人のゲーム開発で使う際は以下の基準で利用しています。
  
-  * 基本的にはフィボナッチ列のようにスクリプト上で大量に計算させる処理は避ける(組込関数で実装する等)+  * 基本的にはフィボナッチ列のようにスクリプト上で大量に計算させる処理は避ける(組込関数で実装する等)
   * スクリプトを読むオブジェクトのしきい値は50個を基準にする(うちの環境だとEditor上で問題なく動く基準。本来ならもっと動かせると思うしGPU周りの要因もあるけど。)   * スクリプトを読むオブジェクトのしきい値は50個を基準にする(うちの環境だとEditor上で問題なく動く基準。本来ならもっと動かせると思うしGPU周りの要因もあるけど。)
   * 大量のオブジェクトを動かす場合(1000個程度)ベース言語側で対応する   * 大量のオブジェクトを動かす場合(1000個程度)ベース言語側で対応する
  
-ただ上記であればもう十分とう感じではありま+実際キャラクターの行動プログラムにつてはかなり複雑に書いてますし、多関節アニメとかもプログラム書いてますが、処理に不足はありません
  
 === 対策 ===  === 対策 === 
  
-なんとかする方法はあるんでしょうか?一応あるんです。+とは言うものの、上記の計算の時間をなんとか改善する方法はあるんでしょうか?一応あるんです。
  
 言ってしまうとアルゴリズムの改善ですね。 言ってしまうとアルゴリズムの改善ですね。
行 99: 行 101:
 ==== 当記事の結論 ==== ==== 当記事の結論 ====
  
-管理人の環境では、Miniscriptは数値計算のベンチマークはとっても遅い。+管理人の環境では、Miniscriptは再帰的な数値計算のベンチマークはとっても遅い。
  
 ただ、アルゴリズムの改造で遅さをカバー可能。 ただ、アルゴリズムの改造で遅さをカバー可能。
  
 (おそらく実装された記法やリスト・マップの柔軟さに重きを置いてるのかなあと思ったりする。Pythonに近い方向性というか) (おそらく実装された記法やリスト・マップの柔軟さに重きを置いてるのかなあと思ったりする。Pythonに近い方向性というか)
 +
  
 ===== ソースコード ===== ===== ソースコード =====
benchmark.1674330761.txt.gz · 最終更新: 2023/01/22 04:52 by machiaworx