Gauche
Gauche copied to clipboard
Avoid r7rs-benchmarks timeout
-
最近更新された r7rs-benchmarks の結果で、 cpstak と parsing のタイムアウト(5分以上)が発生していたため調べました。
-
情報元: https://ecraven.github.io/r7rs-benchmarks/
-
ひとつ前の結果: https://web.archive.org/web/20221104225919/https://ecraven.github.io/r7rs-benchmarks/
-
自分の環境 (Windows) で確認したところ、 Gauche 0.9.14 と 0.9.15 とでは、実行時間が以下のように増加していました。
./bench gauche cpstak 178s ==> 237s (133%) ./bench gauche parsing 296s ==> 370s (125%)
-
このため、git bisect で、0.9.15 と 0.9.14 の間を確認したところ、 次のコミットが見つかりました。 https://github.com/shirok/Gauche/commit/89d270c ( Explicitly start marker threads )
-
変更箇所をコメントアウトしたところ、以下のように改善しました。
./bench gauche cpstak 162s ./bench gauche parsing 263s
<補足情報>
-
https://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3AGC の下の方に、過去の GC の設定の情報があります。(古いですが…) そこに、THREAD_LOCAL_ALLOC を設定すると、シングルスレッドアプリケーションでは、 20%程度速度が低下したというような記述があります。
-
別の情報として、事前に
export GC_INITIAL_HEAP_SIZE=100M
を実行すると、変更箇所のコメントアウト前の実行時間は、
./bench gauche cpstak 117s ./bench gauche parsing 160s
に減少しました。また、変更箇所のコメントアウト後の実行時間は、
./bench gauche cpstak 105s ./bench gauche parsing 134s
に減少しました。 これは以前、 Gauche-r7rs-bench-GM で調べた結果に近くなっています。 ただ、メモリを消費するし、効果があるプログラムは一部だけのようでした。