ホームページ  >  記事  >  バックエンド開発  >  PHP 関数の実行効率のちょっとした比較_PHP チュートリアル

PHP 関数の実行効率のちょっとした比較_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:33:581127ブラウズ

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

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

function splitStrToArray_mine($array)
{
$new_array = array();
foreach($array as $値)
{
$value = (文字列)$value;
$len = strlen($value);
for($i = 0; $i array_push($new_array) , $value{ $i});
}
}
return $new_array;

テストしたところ、まだ動作します。

コードをコピーします コードは次のとおりです。
//配列のテスト
$data = array(12, 43, 87, 45, 98, 74, 83, 67, 12);
var_dump(splitStrToArray_mine($data));
出力結果は次のとおりです。

コードをコピーします

コードは次のとおりです:
array(18) { [0]=> string(1) "1"
[1]=> [2]=>
文字列(1) "4"
[3]=>
文字列(1) "8"
[5]=> ;
文字列(1) "7"
[6]=>
文字列(1) "4"
[8]=> ) "9"
[9]= >
文字列(1) "8"
[10]=>
文字列(1) "7"
文字列(1)
[12]=>
文字列(1) "8"
[13]=>
文字列(1) "6"
[15]=> ;
string(1) "7"
[16]=>
string(1) "1"
[17]=>
string(1) "2"


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



コードをコピー

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


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

そこで、独自の関数と標準関数の間の動作効率のギャップをテストするスクリプトを書きました。正確な時刻サポートを提供するためにこれを使用します:
コードをコピーします コードは次のとおりです:

//時間を測定する関数
function microtime_float()
{
list($usec, $sec) =explode( " ", microtime());
return ((float)$usec + (float)$sec)
//カスタム関数
function splitStrToArray_mine($array)
{
$new_array = 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("", $array ));
}
//配列をテスト
$data = array(12, 43, 87, 45, 98, 74, 83, 67, 12); ($data);
$mine_end = microtime_float();
//標準関数呼び出し
$sta_start = microtime_float();
$sta_end = microtime_float();独自の関数呼び出しは: " . (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));後者: " . $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 = "Hello Friend";
$arr1 = str_split($str);
$arr2 = str_split($str, 3);
print_r($arr1);
print_r($arr2);
?>

出力は次のようになります:
复制代码代码如下:

Array
(
[0] => H
[1] => e
[2] => l
[3] => l
[4] =>
[6] => r
[9] => e
[10] => n
[11] => d
)
配列
(
[1] => lo
[2] =>
[3] =>
)




http://www.bkjia.com/PHPjc/322521.html

www.bkjia.com

http://www.bkjia.com/PHPjc/322521.html技術記事つまり、元の数グループ内の数を「単一」位にします。 以下は、自己書き込みの関数です。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。