配列の全ての要素が等しいか否か mrkn 配列の全ての要素が等しいことはどう確認したら良いんだろう。 `ary.all? {|e| e == ary[0] }` これかなusa ary.uniq.size == 1 mrkn なるほど > uniqusa all?でブロック引数より速そうな予感 いやでもaryがでかくてかつ全然要素が等しくなかったらそうでもないか。 mrkn `ary.all? {|e| e.foo == ary[0].foo }` の場合はどうでしょう。map.uniq.size がいいかなusa all?は全て等しい時に遅いが、序盤で違うとわかったら速い mrkn 確かに > 序盤で違うとわかったら速いusa この辺は予想される集合の傾向で判断するしかないですかねえ。map.uniq.sizeはmapの結果としての一時配列を作らないようにするには、えーと En
HashDoS脆弱性との戦い! Rubyコミッター・卜部昌平が明かすプログラム堅牢化のノウハウ 過去、HashDosの影響を受けたRuby。言語開発者はいかにしてこうした問題に対応してきたのでしょうか。コミッターである卜部氏の貴重な記録を公開します。 2011年の末頃、HashDoSという脆弱性が公表され、Rubyもこの影響を受けた。本稿の筆者である卜部昌平(うらべ・しょうへい/@shyouhei/以下、卜部)は、報告当初からRuby側のチームメンバーとしてプログラム本体の修正を担当した。以下はその記録である。言語開発者たちが普段どのようなことを考え、どういった技術を用いて開発やバグフィックスを行っているのか。その概要を知ってもらえれば幸いだ。 オブジェクト指向スクリプト言語Ruby HashDoSの概要 なぜ約6年後の今、修正内容を公開するに至ったか? 前史:すでに内包されていたリスク

CRuby の Feature #8850 で提案されている Rational を10進小数展開する機能を実装してみた。 循環節の検出は、セルオートマトンの周期解を検出するときに使った手法を応用した。 この手法では、1桁ずつの展開 (標準展開) と2桁ずつの展開 (倍速展開) を同時に進め、両者の状態 (剰余) が等しくなったときに循環を見付けたことになる。 標準展開の末尾の位置と倍速展開の末尾の位置の差が循環節の長さに一致する。 循環節の先頭位置を見付けるには、標準展開と倍速展開のそれぞれの末尾から1桁ずつ前に戻りながら桁の値を比較していけば良い。 たとえば、循環を検出した時点で以下のような小数展開が得られたとしよう。 123.4567891357924680123450987613579246801234 ^ 標準展開の末尾 ^ 倍速展開の末尾 標準展開の末尾と倍速展開の末尾にあるカー
FizzBuzz is asimple coding challenge popularized by Jeff Atwood to test for the most basic level of coding ability. Thegoal of FizzBuzz issimply to print the numbers from 1 to 100, but to replace numbers divisible by 3 with “Fizz”, and those divisible by 5 with “Buzz”. This past Friday, HackerRank launched a FizzBuzz competition with a twist: to solve FizzBuzz with the shortest possible source
The document discusses varioustechniques for optimizing the performance ofembeddedRuby (ERuby)templates.It describes 7iterations of improvements to "MyEruby" that reduced the processing time from over 69 seconds to under 1 second. The optimizations included avoidingline splitting, replacing parsing with patterns, tuning regular expressions, inline expansion and array buffers.
ruby 、perl 、python の多倍長整数演算の速度を適当に比較してみました。フィボナッチ数の計算速度比較以上にどーでもいい比較です。 前置き 使用した処理系のバージョンはそれぞれ以下のとおりです。ruby 1.9.0 (2008-01-16 revision 0)perl v5.10.0python 3.0a2perl は多倍長整数を扱う方法が何個かあるようなので、標準装備らしい bigint と、別途 CPAN でインストールしないといけない Math::BitInt::GMP (GMP の binding) の 2 種類を試しました。python の psyco はなんか動かなくて面倒だったので試してません。この比較にはあまり影響しないような気がしてます。僕はPerl とPython は素人なので、もっと速くて美しい書き方・やり方があったら教えてください。 実験
1リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く