【チラシのうら 38日目】実行速度向上施策
LIFE GAMEを実行してみて実行速度の遅さが気になりました。
2次元配列を繰り返し操作するLIFE GAMEとは相性が悪いのだと思う。
遅い要因として考えられるのは2点
- 1行毎にトークン解析を行っている
プログラムソースコードではなく解析済みのトークンを記録しておけば繰り返し処理でトークン解析の時間が短縮できる。
この解析済みトークンにより多くの情報を詰め込めれば、それだけ実行速度の向上につながると思う。 - 配列変数の評価に時間が掛かる
定数の事前評価が難しいのと同じ理由で添え字を毎回評価しないといけない。
配列の添え字、関数の引数、コマンドパラメタの評価を同じメソッドで処理できるように統合した副作用で遅くなっている気がする。
この点を踏まえて、プログラムリスト管理を作り直しました。
作り直し4回目?かな?
トークンに分割した状態でプログラムリストを記憶する方式に変更。
実行速度が1.4倍になりました。
しかし、トークンのデータサイズが大きくてメモリーを圧迫しています。
最大4500トークンまでしか使えない。※多分800~1000行分
もう一歩、トークンデータの圧縮が必要みたいです。
| 固定リンク
この記事へのコメントは終了しました。

コメント