Closed kachick closed 2 years ago
ref: https://bugs.ruby-lang.org/issues/18611, https://github.com/rubocop/rubocop/pull/10441
10年前に自分用のメモとして https://github.com/kachick/hash-keyable/blob/ad312f72822c655cbc7a9908808b26c4da5c862a/lib/hash/keyable.rb#L10-L35 みたいな形にまとめてた。インスタンス変数の array で hash 呼び出すのが簡単確実だよねぐらいのつもりだったと思うので、XORとくらべていいか悪いかは考えたことがなかったと思う。あとはここに self.class を突っ込むのとかがよくある感じ。
昔の本だとどっちも載ってて、どっちも良しだよぐらいの感じだった記憶があるんだけど、Arrayの生成を都度するのはコスト高いやろー、どっちかというとXORの方が良いのでは ぐらいに思っててあんま深追いした事なかったからちょっと驚いた。 実際コストの話は https://github.com/ruby/ruby/pull/5805 でもされたっぽいんだけど、最終的には通ったっぽい。rubocop とか style 界隈の話かなーと思ってたけど、一応公式見解という結論になったのかな
なるほど、自前実装でコネコネして十分に散った値作るのは難しいから、最初から十分に速くていい感じの値を返してくれる Array#hash なりを使おうぜという感じなのかな。 そんなにやたらな数が突っ込まれはしない気がしてた Security/ scope の cop が増えたのでちょっと気になった。 Security/CompoundHash という定義。
Array#hash
Security/
ref: https://bugs.ruby-lang.org/issues/18611, https://github.com/rubocop/rubocop/pull/10441
10年前に自分用のメモとして https://github.com/kachick/hash-keyable/blob/ad312f72822c655cbc7a9908808b26c4da5c862a/lib/hash/keyable.rb#L10-L35 みたいな形にまとめてた。インスタンス変数の array で hash 呼び出すのが簡単確実だよねぐらいのつもりだったと思うので、XORとくらべていいか悪いかは考えたことがなかったと思う。あとはここに self.class を突っ込むのとかがよくある感じ。
昔の本だとどっちも載ってて、どっちも良しだよぐらいの感じだった記憶があるんだけど、Arrayの生成を都度するのはコスト高いやろー、どっちかというとXORの方が良いのでは ぐらいに思っててあんま深追いした事なかったからちょっと驚いた。 実際コストの話は https://github.com/ruby/ruby/pull/5805 でもされたっぽいんだけど、最終的には通ったっぽい。rubocop とか style 界隈の話かなーと思ってたけど、一応公式見解という結論になったのかな
なるほど、自前実装でコネコネして十分に散った値作るのは難しいから、最初から十分に速くていい感じの値を返してくれる
Array#hash
なりを使おうぜという感じなのかな。 そんなにやたらな数が突っ込まれはしない気がしてたSecurity/
scope の cop が増えたのでちょっと気になった。 Security/CompoundHash という定義。