ホームページ > バックエンド開発 > PHPチュートリアル > PHPWind と Discuz インターセプト文字関数 substr と Cutstr のパフォーマンス比較_PHP チュートリアル

PHPWind と Discuz インターセプト文字関数 substr と Cutstr のパフォーマンス比較_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:22:22
オリジナル
966 人が閲覧しました

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的情况
イラスト: PHPWind プログラムの substrs 関数がインターセプトする平均時間GBK でエンコードされた文字は 0.0014 秒から 0.0015 秒で、縦軸は実行時間を表し、横軸は実行回数を表します。グラフの平均は平均実行時間を表します。s は秒を表します

2、Discuz! プログラムの Cutstr GBKの場合は文字コードをインターセプトする関数です
Discuz!程序cutstr函数当截取字符编码为GBK的情况

: PHPWind プログラムの substrs 関数が UTF-8 としてエンコードされた文字をインターセプトする場合、Discuz! プログラムの Cutstr 関数が GBK エンコードされた文字をインターセプトするのにかかる平均時間は 0.0016 秒から 0.0018 秒

3 です。
PHPWind程序substrs函数当截取字符编码为UTF-8的情况イラスト

: PHPWind プログラムの substrs 関数が UTF-8 でエンコードされた文字をインターセプトする平均時間は 0.001 秒から 0.0012 秒です

4、プログラムの Cutstr 関数は UTF-8 でエンコードされた文字をインターセプトします


イラストDiscuz!程序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.comtru​​ehttp://www.bkjia.com/PHPjc/324703.html技術記事 Benchmark_Iterate クラス ツールの使用方法をマスターします。 目次 1. PEAR とベンチマークとは 2. 性能比較コードの準備とデバッグ 3. 性能比較テストの結果 4. 性能比較テスト...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート