2017-01-09: String#rindexをラビン-カープ法で実装したり、GOOD ON THE REELを聴いたり
やったこと
String#rindexをラビン-カープ法で実装した
String#indexができたんだからrindexもできるだろう的な。速くするのが難しい。
V8の実装を確認したり(後ろから文字列を舐めていって、最初の文字が同じだったら実際の比較を行なうようになってた。String.prototype.indexOfは文字列の長さによって色々な戦略が取られるようになっていた。memchr的なので最初の文字だけ探して、実際の比較を行なって、何度かそれに失敗したらBMH法に移行する、みたいなのが面白かった)、Rustの実装の知見を得たり(Two Way Algorithmというやつらしい。詳細はよく分かっていない)した。
あと、多分SSE 4.2で追加された文字列処理SIMDを使うのが一番速いんだろうなぁ、とも思うんだけど、それだとUTF-8の文字数カウントできないし‥‥。
GOOD ON THE REELを聴いた
GOOD ON THE REELというバンドに出会った。
GOOD ON THE REEL / 存在証明書 Music Video https://t.co/nvBcltPR9p @YouTubeさんから
— さっき作った (@make_now_just) 2017年1月9日
どうして出会ったのかはよく覚えていない。なんかツイートで流れてきたような気がする。
ツイートは「存在証明書」だけど「素晴らしき今日の始まり」とか「雨天決行」とか、かなり良い。
もっと色々なバンドを知っていきたい。