目次
CIフレームワークのソースコード読解メモ5 ベンチマークテスト BenchMark.php、cibenchmark.php
関数の署名は次のとおりです:
{elapsed_time}
ホームページ バックエンド開発 PHPチュートリアル CI フレームワークのソースコード閲覧メモ 5 ベンチマークテスト BenchMark.php、cibenchmark.php_PHP チュートリアル

CI フレームワークのソースコード閲覧メモ 5 ベンチマークテスト BenchMark.php、cibenchmark.php_PHP チュートリアル

Jul 13, 2016 am 10:15 AM
フレーム テスト ソースコード ノート 読む

CIフレームワークのソースコード読解メモ5 ベンチマークテスト BenchMark.php、cibenchmark.php

前回のブログ(CIフレームワークのソースコード読解メモ4 ブートファイルCodeIgniter.php)では、コアプロセスのコアについて見てきました。 CI では、機能はさまざまなコンポーネントによって実行されます。これらのコンポーネントは個々のモジュールに似ており、さまざまなモジュールが相互に呼び出して、CI のコア スケルトンを形成します。

この記事から始めて、各コンポーネントの実装の詳細をさらに分析し、CI コアのブラック ボックスを深く掘り下げていきます (調査の後、実際にはホワイト ボックスであるはずですが、アプリケーションの場合のみブラック ボックスとみなされます)ボックス)をよりよく理解するには、このフレームワークを理解して把握することが最善です。

いつものように、開始する前に、不完全なコアコンポーネント図を CI に貼り付けます:

BenchMark は CI にロードされる最初のコア コンポーネントであるため、分析は最初にこのコンポーネントから始まります。 BenchMark ツールを使用したことのある学生は、これがベンチマーク コンポーネントであることを知っているはずです。 BenchMark であるため、BM コンポーネントの主な機能はプログラムの実行時間、メモリ使用量、CPU 使用量などを記録することであると大胆に推測できます。

まずクラス図を見てください:

このコンポーネントの構造は比較的単純で、マーカー内部変数が 1 つと外部インターフェイスが 3 つだけあります。 リーリー

1 つずつ展開してみましょう:

1. マーク

関数の署名は次のとおりです:

リーリー

この関数は文字列型のパラメータを受け入れ、実装は 1 つの文だけで簡単になります:

リーリー

言い換えれば、この関数は、関数が呼び出された時点を記録するためにのみ使用されます。

コントローラーでの特別な処理 (後で詳しく説明します) により、

$this->benchmark->mark($name);

を使用してアプリケーションに追加できることに注意してください。コントローラー 実行時点、例: リーリー そのうち、

function_test_start

function_test_endは、それぞれ関数呼び出しの開始時点と終了時点を記録するために使用されます 印刷結果:

ここで関数の呼び出し時間を計算するには、BenchMark コンポーネントの 2 番目の関数 elapsed_time を使用する必要があります

2.経過時間

関数の署名は次のとおりです:

リーリー

3 つのパラメータはすべてオプションのパラメータです

(1)。$point1 が空の場合は、「{elapsed_time}」を返します

リーリー ナニ!明らかに時間を返すはずですが、代わりに文字列を返します。これは非常に奇妙です (smarty タグに似ています)。実際、Output コンポーネントでは、

{elapsed_time}

が置き換えられます。ここでは、置き換えメソッドを見てみましょう。 リーリー つまり、パラメータが指定されていない場合、この関数を呼び出して実際に取得されるのは、total_execution_time_start

から

total_execution_time_endまでの時間差です。さらに、total_execution_time_start は BM がロードされた後に設定される最初のマーク ポイントであるため (total_execution_time_end は定義されておらず、現在の時点を返します)、この関数が実際に返すのはシステムのロード時間と実行時間です。 (2) 不明なマークポイントが呼び出された場合。結果は不明で、空が直接返されます:

リーリー (3). $point2 のマークポイントが設定されていない場合は、$point2 のマークポイントを現在の時点に設定します。

リーリー (4) 返された最後の 2 つのマーク ポイント間の時間差:

リーリー 前の例も見てください。ここで次のように呼び出すことができます: リーリー

関数の実行時間を取得します。

3.メモリ使用量

この関数はシステムのメモリ使用量 (MB 単位) を返します。

{elapsed_time}

と同様に、この関数によって返される

{memory_usage} も出力: に置き換えられます。 リーリー BenchMark コンポーネント自体は比較的単純なので、これ以上の説明は省略します。

最後に、このコンポーネントのソースコードを貼り付けます:

<span>1</span> <span>Elapsed_time
</span><span>2</span> <span>Mark
</span><span>3</span> Memory_usage
ログイン後にコピー

PHP CI フレームワークを使用して単体テストを行うにはどうすればよいですか? CI と phpunit に付属のものを使用した方が良いでしょうか?

phpユニット


ci フレームワークには mysql バージョンの要件があるのですが、mysql55 を使用するとエラーが報告されるのはなぜですか

Mysql.ciは最新ではありませんが、現在は正常に使用されています。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/907043.html技術記事 CI フレームワークのソース コードの読み取りメモ 5 ベンチマーク テスト BenchMark.php、cibenchmark.php 前回のブログ (CI フレームワークのソース コードの読み取りメモ 4 ブート ファイル CodeIgniter.php) では、CI コア...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java フレームワークの商用サポートの費用対効果を評価する方法 Java フレームワークの商用サポートの費用対効果を評価する方法 Jun 05, 2024 pm 05:25 PM

Java フレームワークの商用サポートの費用対効果を評価する方法

PHP フレームワークの軽量オプションはアプリケーションのパフォーマンスにどのような影響を与えますか? PHP フレームワークの軽量オプションはアプリケーションのパフォーマンスにどのような影響を与えますか? Jun 06, 2024 am 10:53 AM

PHP フレームワークの軽量オプションはアプリケーションのパフォーマンスにどのような影響を与えますか?

Golang フレームワークのドキュメントのベスト プラクティス Golang フレームワークのドキュメントのベスト プラクティス Jun 04, 2024 pm 05:00 PM

Golang フレームワークのドキュメントのベスト プラクティス

さまざまなアプリケーションシナリオに最適な Golang フレームワークを選択する方法 さまざまなアプリケーションシナリオに最適な Golang フレームワークを選択する方法 Jun 05, 2024 pm 04:05 PM

さまざまなアプリケーションシナリオに最適な Golang フレームワークを選択する方法

PHP フレームワークの学習曲線は他の言語フレームワークと比較してどうですか? PHP フレームワークの学習曲線は他の言語フレームワークと比較してどうですか? Jun 06, 2024 pm 12:41 PM

PHP フレームワークの学習曲線は他の言語フレームワークと比較してどうですか?

golang フレームワーク開発の実践的な詳細な説明: 質疑応答 golang フレームワーク開発の実践的な詳細な説明: 質疑応答 Jun 06, 2024 am 10:57 AM

golang フレームワーク開発の実践的な詳細な説明: 質疑応答

Android 15 Beta 4の包括的なテストが完了し、安定版リリースへのカウントダウンが始まりました Android 15 Beta 4の包括的なテストが完了し、安定版リリースへのカウントダウンが始まりました Jul 29, 2024 pm 07:57 PM

Android 15 Beta 4の包括的なテストが完了し、安定版リリースへのカウントダウンが始まりました

Golang フレームワークのパフォーマンス比較: 賢明な選択を行うための指標 Golang フレームワークのパフォーマンス比較: 賢明な選択を行うための指標 Jun 05, 2024 pm 10:02 PM

Golang フレームワークのパフォーマンス比較: 賢明な選択を行うための指標

See all articles