タグ

ブックマーク / kwatch.hatenadiary.org (2)

  • Enumerable#select と #collect を同時に行いたい - kなんとかの日記

    せっかくなので小ネタを。 Python でのリスト内包表記は、for と if を同時に書ける。これはループを1回まわるだけで、選択 (select) と写像 (collect) を一度に行えることを意味する。 >>> L = ['foo', 'bar', 'baz'] >>> [ x.upper() for x in L if x.startswith('ba') ] ['BAR', 'BAZ'] これと同じことを Ruby でやると、Enumerable#collect と #select を使うわけだが、そうするとループを2回まわることになり、アルゴリズム的には動作効率はよくない。 irb> arr = ['foo', 'bar', 'baz'] => ["foo", "bar", "baz"] irb> arr.select {|x| x =~ /\Aba/ }.collect {

    Enumerable#select と #collect を同時に行いたい - kなんとかの日記
    twodollarz
    twodollarz 2012/05/16
    grep() の引数は '===' 演算子をサポートしたものしか指定できないので、ブロックを指定できる select と比べれば、明らかに自由度は低い。
  • プログラミング言語の速度とアプリケーションの速度がいかに関係ないかがわかるグラフ - kなんとかの日記

    まずは次の表をご覧あれ。これはプログラミング言語のベンチマークとして有名な Computer Language Benchmarks Game のベンチマーク結果。上にいくほど高速で、下に行くほど遅い言語になる。 これを見れば、最速な言語は C/C++ であり、Java や Haskell や OCaml といった静的な言語は軒並み上位に登場する。これに対し、RubyPythonPHP といったスクリプトは全部下のほう (つまり遅い)。その速度差は非常に大きく、このベンチマークで見ると Python3 や Ruby1.9 は C/C++ の約50倍から60倍遅く、Perl は約90倍、PHP にいたっては約130倍遅いことになる。 (ちなみに JIT つきの Lua が驚異的に高速なのが目をひく。この結果が当だとしたら、言語の速度に大きく関係するのは動的か静的かではなく、どれ

    プログラミング言語の速度とアプリケーションの速度がいかに関係ないかがわかるグラフ - kなんとかの日記
  • 1