タグ

ブックマーク / mametter.hatenablog.com (2)

  • ハッシュは頻繁に参照する値を最後に入れると高速 - まめめも

    明日から RubyKaigi なので、ちょっとした小ネタを一つ。 例えば、0 から 9999 までをハッシュに順に入れます。 h = {} 10000.times do |n| h[n] = true end このとき、h[9998] や h[9999] は、h[0] や h[1] より高速です。 どのくらい高速かというと、 1_000_000_000.times { h } # 40.8 sec (ループ自体の速度) 1_000_000_000.times { h[9999] } # 57.2 sec 1_000_000_000.times { h[0] } # 89.1 sech[0] は 89.1 - 40.8 = 48.3 nsec 、h[9999] は 57.2 - 40.8 = 16.4 nsec ということになります。なんと 3 倍も速い。*1 なぜこんなことが起きるのか ハ

    ハッシュは頻繁に参照する値を最後に入れると高速 - まめめも
    bsheep
    bsheep 2015/12/11
  • bf2piet: brainfuck から Piet への変換 - まめめも

    esoteric language 好きなら一度は見たことのあるはずの画像プログラミング言語 Piet をまじめに勉強してみました。 どんな言語か簡単に説明すると、 画像がプログラムになる スタックを 1 個持つ (スタックマシン) befunge みたいに左上から右方向に実行が進む 色相と明度の差が命令を意味し、スタックに対する push/pop/加減乗除余や、進行方向の変更などを行う 黒は進行方向を変える壁、白は nop という感じで、サンプルコードを見てもなかなか意味不明でいい感じの言語です。 Piet の仕様についてはそのうち翻訳とかしたいけど、とりあえずは手始めに、Piet がチューリング完全であることを証明するべく、brainfuck から Piet への変換を作ってみました。 brainfuck の echo プログラム ,[.,] を変換して出来た Piet のプログラムは

  • 1