ホームページ  >  記事  >  バックエンド開発  >  CI フレームワークのソースコード閲覧メモ 5 ベンチマークテスト BenchMark.php、cibenchmark.php_PHP チュートリアル

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

WBOY
WBOYオリジナル
2016-07-13 10:15:001097ブラウズ

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 までご連絡ください。