Benchmark_Iterate クラス ツールの使用方法をマスターします。
目次
1. PEAR とベンチマークとは
2. パフォーマンス比較コードの準備とデバッグ
4. パフォーマンス比較テストの概要
5. . PEAR とベンチマークとは
PHP パフォーマンス最適化シリーズを参照してください
PHP パフォーマンス最適化ツールの第 2 回 ベンチマーク クラスのデバッグ実行時間
PHP パフォーマンス最適化の準備の第 1 回図解 PEAR のインストール
第 2 回、パフォーマンス比較コードの準備とデバッグ
テスト環境の説明
オペレーティング システム: Windows XP Service Pack 3
PHP バージョン: PHP バージョン 5.2.11
Apache バージョン: Apache 2.0 ハンドラー
最初のステップ、phpwind と discuz プログラムのソース コードをダウンロードします
1! 、phpwind v7.5sp3 フォーラム バージョンのダウンロード インストール パッケージ: 簡易 GBK
2、Discuz! 7.2_FULL (UCenter を含む) のダウンロード 簡易 GBK
2 番目のステップは、2 つのプログラムのインターセプト文字関数 substrs() と Cutstr() を取得することです。そのうち、PHHPWind インターセプト文字関数 substrs() これは、substrs 関数と utf8_trim 関数の 2 つの関数で構成されます。
コードをコピーします
コードは次のとおりです: function substrs($content,$length,$add='Y'){
if (strlen($content)>$length) {
if ($GLOBALS ['db_charset']!='utf-8') {
$retstr = '';
for ($i=0;$i$retstr .= ord ($content [$i]) > 127 ? $content[$i].$content[++$i] : $content[$i];
return $retstr.($add=='Y' ? ' .' : '');
return utf8_trim($content,0,$length).($add=='Y' ? ' ..' : ''); $content;
}
function utf8_trim($str) {
$hex = '';
$len = strlen($str)-1;
for ($i=$len;$i>=0;$i- =1) {
$ch = ord($str[$i]);
$hex .= " $ch";
if (($ch & 128)==0 || ($ch & 192)== 192) {
return substr($str,0,$i);
}
}
return $str.$hex;
function Cutstr($string, $length, $dot = ' ...') {
グローバル $charset;
if(strlen($string) <= $length) {
return $string;
}
$string = str_replace(array('&', '"', '<', ' >' ), array('&', '"', '<', '>'), $string);
$strcut = '';
if(strto lower($charset) == 'utf- 8') {
$n = $tn = $noc = 0;
while($n < strlen($string)) {
$t = ord($string[$n]); = 9 | $t == 10 || (32 <= $t && $t <= 126)) { $n++ = 1; && $t <= 223) {
$tn = 2; $n += 2; $noc += 2;
} elseif(224 <= $t && $t <= 239) {
$tn = 3; $n += 3;
} elseif(240 <= $t && $t <= 247) { $n += 4; ;
} elseif(248 <= $t && $t <= 251) {
$tn = 5; $noc += 2;
} elseif($t == 252 t == 253) {
$tn = 6; $noc += 2;
} if($noc >= $length) {
}
}
if($noc > $length) {
$n -= $tn;
}
$strcut = substr($string, 0, $n)
} else {
for($i = 0) ; $i $strcut .= ord($string[$i]) > $string[$i].$string[++$i] i];
}
}
$strcut = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', ' >' ), $strcut);
return $strcut.$dot;
3 番目のステップは、PEAR Benchmark_Iterate クラスを使用してデバッグ用のコードを作成することです
コードは次のとおりです
require_once "Benchmark/Iterate.php";
$bench = new Benchmark_Iterate;
$charset = $GLOBALS['db_charset'] = 'gbk';//utf-8
$content = 「今年の春節祝賀会、私は趙弁山に特に注目しました。新しいコント「寄付」、このコントの恵まれないグループに対する軽視は変わっていません。このコントは、趙弁山とその弟子たちが二人の寄付者を演じるというものです...";
/*phpwind*/
$bench-> run(50,"substrs",$content,30);
/*discuz*/
//$bench->run(50,"cutstr",$)コンテンツ,30);
$result = $bench->get()?>
substrs 関数と Cutstr 関数をそれぞれ切り替えて 50 回呼び出し、2 つの関数の平均実行時間を取得します。
三、性能比較テスト結果1. PHPWind プログラムの substrs 関数が GBK としてエンコードされた文字をインターセプトする場合イラスト: PHPWind プログラムの substrs 関数がインターセプトする平均時間GBK でエンコードされた文字は 0.0014 秒から 0.0015 秒で、縦軸は実行時間を表し、横軸は実行回数を表します。グラフの平均は平均実行時間を表します。s は秒を表します
2、Discuz! プログラムの Cutstr GBKの場合は文字コードをインターセプトする関数です
図: PHPWind プログラムの substrs 関数が UTF-8 としてエンコードされた文字をインターセプトする場合、Discuz! プログラムの Cutstr 関数が GBK エンコードされた文字をインターセプトするのにかかる平均時間は 0.0016 秒から 0.0018 秒
3 です。
イラスト
: PHPWind プログラムの substrs 関数が UTF-8 でエンコードされた文字をインターセプトする平均時間は 0.001 秒から 0.0012 秒です
4、プログラムの Cutstr 関数は UTF-8 でエンコードされた文字をインターセプトします
イラスト: Discuz! プログラムの Cutstr 関数が UTF-8 エンコードされた文字をインターセプトするのにかかる平均時間は 0.0044 秒から 0.0052 秒です
4 番目、パフォーマンス比較テストの概要
PEAR の Benchmark_Iterate を使用して 2 つを比較します上記のクラスを使用して、文字関数の実行パフォーマンスをインターセプトします。実際のコード開発プロセスでは、コードの効率とパフォーマンスを確保するために、同じ方法を使用して関数の実行パフォーマンスや問題を分析できます。役に立つ!
この記事では、PHPWind と Discuz コミュニティ フォーラム製品のインターセプト文字関数 substrs と Cutstr の実行パフォーマンスの比較を例として、実際の開発における PEAR Benchmark_Iterate クラスの適用について説明します。 PHP パフォーマンス最適化シリーズの次号。
http://www.bkjia.com/PHPjc/324703.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/324703.html技術記事 Benchmark_Iterate クラス ツールの使用方法をマスターします。 目次 1. PEAR とベンチマークとは 2. 性能比較コードの準備とデバッグ 3. 性能比較テストの結果 4. 性能比較テスト...