目次
概要
詳細
解決策
概要
Sodaにおけるyield関数をつかった動作について、明らかに遅いので調べてみたところ、Mutex関数が絡んでるのでその記事を書く。
詳細
SodaではYield関数を実行する際、RunUntilDone関数の外へ抜けて、SDLへ待ち合わせの命令をかけて、yieldから元の処理に戻すときにSDLと協調する。
ただ、現状のバージョンではこの待ち合わせ処理での時間がかかり過ぎて、結果として処理そのものが全体的に遅延している。
参考になる動画
https://www.youtube.com/watch?v=P3PDALrXurs
原因として考えられるのは、待ち合わせ処理でMiniScriptで実装しているREPLの待ち合わせも行うんだけど、このウェイト時間があまりに大きいせいで、yieldの処理に追加してウェイトが入る状態になってる。
解決策
Sodaの内部を修正する。
「interp.REPL(inp, 0.1)」となっている部分の数値を0.01にする。
これで待ち時間は減る。
ただ、この上だとREPL絡みで問題が起こる可能性があるので、デバッグは必要。