2020-08-08: 天井社長の夏の宿題2つ目
やったこと
シャニ
社長の夏休みの宿題その2、R編成でGRAD優勝をやった。
こっちはとくに難しくなかった。やっぱR編成でTrueの難易度がおかしい。
https://twitter.com/make_now_just/status/1291990170212773891
diary
ヘッダーのバーが表示されていなかったのが気になった。
cssnanoのバグで、% 表記のopacityが1%にされてしまってるからっぽい。
https://github.com/cssnano/cssnano/issues/892
とりあえず0.x表記にすることで解決した。
cssnanoのメンテナが足りてないのか新バージョンがリリースされてない‥‥。
あとservice workerいらない気がしたので削除した。
この決断に何年かけたんだ‥‥。
そろそろこのdiaryも作り直すべきなのかねえ(式年遷宮)。
Scala
昨日やっていたfastparseもどき、miniparseをプロファイルとって最適化してみた。
.repの結果としてSeqを作るところと、予期していたトークンを保持するBufferの確保と、予期していたトークン名の生成が問題になっていたので、その辺りを最適化してみた。
[info] Benchmark Mode Cnt Score Error Units
[info] Bench.measureAtto thrpt 3 85.396 ± 21.794 ops/s
[info] Bench.measureFastparse thrpt 3 2853.266 ± 557.498 ops/s
[info] Bench.measureMiniparse thrpt 3 2861.233 ± 655.351 ops/s
[info] Bench.measureParserCombinators thrpt 3 287.327 ± 1249.551 ops/s
fastparseと同じくらいになったのでいい感じ。
ただ、エラーメッセージが不親切になってしまったので、予期していたトークン名を生成する部分だけマクロにした方がいいようだ。
プロファイルはasync-profilerを使った。
フレームグラフが簡単に出力できて便利だった。
使い方は簡単で、jspでプロファイルを取る対象のJVMプロセスを調べて、次のようにする。
$ ./profile.sh -d 30 -f flamegraph.svg <プロセス番号>
-dのあとの数字は測定する秒数で、このコマンドでflamegraph.svgが生成される。
これはこれで楽しいけどそろそろ諸々をやっていかなければ‥‥。