ダウンロード サンプルファイル (3.5 KB)
速度比較
C言語の実装と(fib-bench.c)、PHPの素朴な実装1の速度を比較すると図のようになります(Athlon 64 X2 4400+, 主記憶2GBのマシンで実行しました。グラフの横軸が対数になっていることに注意してください)。

nが小さいところだけ調べて、「Fibonacci数の計算時間は一定だ」というふうに誤解することがあるかもしれません。f(n)の計算時間は、(今日私たちが利用できる実装においては)nと共に増加します。

おわりに
本稿で解説したのは以下の3点です。
- PHPで多倍長整数を扱う方法(Fibonacci数の計算を例にして)
- プログラムの一部の実行時間を計測する方法
- 複数の数値データから統計量を求める方法
PEAR Math_Fibonacciは特殊な実装をしているため、大きいnに対するf(n)の計算には使えないことが分かりました。
Fibonacci数や多倍長整数が必要になることはあまりないかもしれませんが、ちょっとしたベンチマークや統計処理が必要になることは多いと思います。そういう時に、本稿で紹介した方法がきっと役立つでしょう。
参考文献
- 『The Art of Computer Programming Volume 1 Fundamental Algorithms Third Edition 日本語版』 ドナルド・E・クヌース 著、有澤誠・和田英一 編、青木孝・筧一彦・鈴木健一・長尾高弘 訳、アスキー、2004年2月
- 『The Art of Computer Programming Volume 3 Sorting and Searching Second Edition 日本語版』 ドナルド・E. クヌース 著、有澤誠・和田英一 訳、アスキー、2006年4月
この記事は参考になりましたか?
既に会員の方はを行ってください。
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 矢吹 太朗(ヤブキ タロウ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
