
エントリーの編集

エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
Rubyではシフト演算 `1 << k` より配列参照 `lookup[k]` のほうが速い - Qiita
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています

- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
Rubyではシフト演算 `1 << k` より配列参照 `lookup[k]` のほうが速い - Qiita
AtCoderの問題をRubyで復習していて、どうしても時間制限超過(TLE)してしまうものがあった。 他の方の... AtCoderの問題をRubyで復習していて、どうしても時間制限超過(TLE)してしまうものがあった。 他の方の解答を見たりして試しているうちに、どうもシフト演算の実行回数が多いとTLEしやすいということがわかった1。計算したいのは 1 << k という単純なもの(を最大3000万回ほど)なので、これを事前に計算しておき配列参照 lookup[k] に置き換えたところ無事に通過した。 そんなに速度差があるのか気になったので、ベンチマークしてみた。 ベンチマーク AtCoderのコードテストを利用。その結果、配列参照のほうが約1.3倍速く、3000万回計算すると0.3秒ほど短くなった。 puts RUBY_DESCRIPTION puts require 'benchmark' n = 30 lookup = Array.new(n) { |i| 1 << i } m = 30_000_00