ホームページ > php教程 > php手册 > PHP 関数の実行効率の小さな比較

PHP 関数の実行効率の小さな比較

WBOY
リリース: 2016-06-21 08:56:15
オリジナル
1209 人が閲覧しました

これは、元の配列内のすべての数値を「単一」の数字に「分割」することを意味します。
以下は私が書いた関数です:

コードをコピーします コードは次のとおりです:


関数 splitStrToArray_mine($array)
{
$new_array = array();
foreach($array as $value)
{
$value = (string)$value;
$len = strlen($value);
for($i = 0; $i < $len; $i ++){
array_push($new_array, $value{$i}) ;
}
}
$new_array を返す
}


テスト後も動作するので、次のように呼び出します:

コードをコピーします コードは次のとおりです:


//テスト配列
$data = array(12, 43, 87, 45, 98, 74, 83, 67, 12);
var_dump(splitStrToArray_mine($data)); 🎜>
出力結果は次のとおりです:



コードをコピーします コードは次のとおりです:

配列(18) {

[0]=>
文字列(1) "1"
[1]=>
文字列(1) "2"
[ 2]=>
文字列(1) "4"
[3]=>
文字列(1) "3"
[4]=>文字列(1) "8"
[5]=>
文字列(1) "7"
[6]=>
文字列(1) "4"
[7]=>
文字列(1) "5"
[8]=>
文字列(1) "9"
[9]=>
文字列(1) "8"
[10]=>
文字列(1) "7"
[11]=>
文字列(1) "4"
[12]=> 1) "8"
[13]=>
文字列(1) "3"
[14]=>
文字列(1) "6"
[15]= >
文字列(1) "7"
[16]=>
文字列(1) "1"
文字列(1) "2"
}


実行は良好ですが、標準的な答えを見ると驚くでしょう。関数には次の 1 つの文しかありません。


コードをコピーします
コードは次のとおりです:

//標準関数 function splitStrToArray($array) { return str_split(implode("", $array))


そこで、独自の関数と標準関数の間の動作効率のギャップをテストするスクリプトを作成しました。その中には、正確な時刻サポートを提供する microtime_float() 関数があります。



コードをコピーします。

コードは次のとおりです:

//時間を計測する関数function microtime_float() { list($usec, $sec) =explode(" ", microtime()); return ((float) $usec + (float)$sec);

}

//カスタム関数
function splitStrToArray_mine($array)
{
$new_array = array(); $value として配列)
{
$value = (string)$value;
$len = strlen($value);
for($i = 0; $i array_push($new_array, $value{$i});
}
}
return $new_array;
//標準関数
function splitStrToArray($array)
{
return str_split(implode("", $array));
}
//配列をテストします
$data = array(12, 43 , 87, 45, 98, 74, 83, 67, 12);
//テストの開始
$mine_start = microtime_float();
splitStrToArray_mine($data); ;
//標準関数呼び出し
$sta_start = microtime_float();
$sta_end = microtime_float()
echo "独自の関数呼び出しの実行時間は次のとおりです。 " . (float)($mine_end - $mine_start) . " S
";
echo "標準の関数呼び出しの実行時間は次のとおりです: " . (float)($sta_end - $sta_start) . " S
";
$multiple = (int)((float)($mine_end - $mine_start) / (float)($sta_end - $sta_start));
echo "前者です後者: " . $multiple . " 回! ";



出力を見てみましょう:

独自の関数呼び出しの実行時間は: 9.3936920166E-005 S
標準関数呼び出しの実行時間は: 2.69412994385E -005 S
前者は後者:3回!
ページを複数回更新すると、標準関数の実行効率は独自関数の基本的に 3 倍であることがわかります。もちろん、標準関数は PHP の組み込み関数 str_split() や implode() を使用するため、自分で関数を記述するよりもはるかに高速です。 str_split() 関数についての印象はありませんか。マニュアルの説明を見てみましょう:
str_split -- 文字列を配列に変換します (文字列を配列に変換します)

関数の説明:


array str_split ( string string [ , int split_length] )

コードをコピー

コードは次のとおりです:


文字列を配列に変換します。オプションのsplit_lengthパラメータが指定されている場合、返される配列は、それぞれの長さがsplit_lengthであるチャンクに分割されます。それ以外の場合、各チャンクの長さは1文字になります。
split_length が 1 未満の場合は FALSE が返されます。split_length の長さが文字列の長さを超える場合は、文字列全体が最初 (唯一) の配列要素として返されます。


例 1. str_split() の使用例

复制代 代码如下:


$str = "こんにちは";
$arr1 = str_split($str);
$arr2 = str_split($str, 3);
print_r($arr1);
print_r($arr2);
?>


出力は次のようになります:

复制代 代码如下:


配列
(
[0] => H
[1] => e
[2] => l
[3] => l
[4] =>
[5] =>F
[8] => [9] => e
[10] => n
[11] => d
)
配列
(
[0] => 🎜>[1] => ロー
[2] => 終了
)





関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート