タグ

2010年4月29日のブックマーク (2件)

  • LL言語の実行速度比較 - imHo

    「YouTube.comいわくPythonは速い」とかいうもんだからついガッとなって、いろんな言語でフィボナッチ計算をさせて時間を計ってみた。 Intel Core2 6600 @ 2.40GHz, 2.00 GB RAM, Windows, Cygwin Python def fib(n): if n < 2: return n else: return fib(n-1) + fib(n-2) print fib(30) $ time python fib.py 832040 real 0m0.801s user 0m0.811s sys 0m0.015s $ python --version Python 2.5.1 Ruby def fib(n) if n < 2 n else fib(n-1) + fib(n-2) end end print fib(30) $ time ruby

    LL言語の実行速度比較 - imHo
  • C++0x時代の Double-Checked Locking - yamasaのネタ帳

    今回は "Double-Checked Locking" (以下DCL)というマルチスレッドプログラム向けのイディオムを例にして、C++0xの(低レイヤ向け)マルチスレッド機能の利用方法を紹介してみます。 DCLとは、「ロック→条件判定」というロジックを「条件判定→ロック→(再度)条件判定」と書き換えるイディオムで、主に遅延初期化などの処理においてロックのオーバーヘッドを減らすために用いられます。DCLはシンプルかつ効果の高いイディオムだったので、一時期もてはやされました。ところが、DCLはコンパイラやCPUによるリオーダーの影響により正しく動作しない場合があることがわかったため(参考1、参考2)、今ではアンチパターンと呼ばれることすらある始末です。 しかし、DCLの問題点は、メモリモデルに関する知識があまり知られていなかったことと、プログラミング言語の仕様でメモリモデルが正しく定義されて

    C++0x時代の Double-Checked Locking - yamasaのネタ帳