SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

コードの最適化に役立つPHPスクリプトのベンチマーク

Benchmarkパッケージを使ったベンチマーク出力とグラフ表示

ベンチマーク結果の出力

 この反復と再帰によるフィボナッチ数列プログラムは、どちらもフォーマットされたテーブルと連想配列という2つの形式で結果を出力します。

 テーブル形式の結果には、各マーカーの名前と、そのマーカーに到達するまでの経過時間(Time Index)、前のマーカーからそのマーカーに達するまでに要した時間(Ex Time)、さらには総時間に対するEx Timeの割合(%)が表示されます。

 反復の場合の結果は次のとおりです。

Time IndexEx TimePercentage
Start1209633208.32539500-0.00%
fibonacci01209633208.325465000.00007022.88%
fibonacci11209633208.325494000.0000299.48%
fibonacci21209633208.325516000.0000227.19%
fibonacci31209633208.325539000.0000237.52%
fibonacci41209633208.325562000.0000237.52%
fibonacci51209633208.325586000.0000247.84%
fibonacci61209633208.325608000.0000227.19%
fibonacci71209633208.325631000.0000237.52%
fibonacci81209633208.325656000.0000258.17%
fibonacci91209633208.325678000.0000227.19%
Stop1209633208.325701000.0000237.52%
Total-0.000306100.00%

 連想配列には、同じ情報が配列形式で格納されています。

Array
(
    [name] => fibonacci0
    [time] => 1209633208.32546500
    [diff] => 0.000070
    [total] => 0.000070
)
Array
(
    [name] => fibonacci1
    [time] => 1209633208.32549400
    [diff] => 0.000029
    [total] => 0.000099
)
Array
(
    [name] => fibonacci2
    [time] => 1209633208.32551600
    [diff] => 0.000022
    [total] => 0.000121
)

 再帰の場合の結果は次のとおりです。

Time IndexEx TimePercentage
Start1209633188.10306000-0.00%
fibonacci01209633188.103225000.0001657.83%
fibonacci11209633188.103305000.0000803.80%
fibonacci21209633188.103358000.0000532.52%
fibonacci31209633188.103430000.0000723.42%
fibonacci41209633188.103500000.0000703.32%
fibonacci51209633188.103592000.0000924.37%
fibonacci61209633188.103716000.0001245.89%
fibonacci71209633188.103883000.0001677.93%
fibonacci81209633188.104151000.00026812.72%
fibonacci91209633188.104553000.00040219.08%
Stop1209633188.105167000.00061429.14%
Total-0.002107100.00%

 同様に、連想配列には同じ情報が配列形式で格納されています。

Array
(
    [name] => fibonacci0
    [time] => 1209633188.10322500
    [diff] => 0.000165
    [total] => 0.000165
)
Array
(
    [name] => fibonacci1
    [time] => 1209633188.10330500
    [diff] => 0.000080
    [total] => 0.000245
)
Array
(
    [name] => fibonacci2
    [time] => 1209633188.10335800
    [diff] => 0.000053
    [total] => 0.000298
)

 ご覧のとおり、Benchmark_Timerクラスを使うと、マーカーを使って厳密な結果を得ることができます。しかし、ほとんどの場合は、個々のコード行よりも、まとまった関数のベンチマークを測定したいと思うのではないでしょうか。特に、関数自体のコードを修正せずにベンチマークを測定できれば便利です。そのためにはBenchmark_Iterateクラスを使用します。

次のページ
Benchmark_Iterateクラス

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Octavia Andreea Anghel(Octavia Andreea Anghel)

経験豊富なPHP開発者。現在は、国内外のソフトウェア開発コンテストに参加するプログラミングチームの主任トレーナーを務める。国レベルの教育プロジェクト開発のコンサルティングも担当している。共著書に『XML technologies?XML in Java』があり、XML部分の執筆を担当。PHPやXML...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2784 2008/07/31 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー