うえるかむとぅあんだぁぐらうんど

世の中わからないことだらけだ.少し確かなことは検証をしたことだけ

PHPベンチマーク is_int or preg_match

お世話になっております。

この度PHPでWebサービス構築中に数字のインプットデータを扱う部分を書いて居たのですが、 [php]if (!preg_match("/[0-9]+/", $var)){echo "ERR!"}[/php] の様な処理を書いており純粋なint型の時は「is_int」とどちらが早いのかという疑問を持ったので少々実験してみました。

ソースコード

preg_match

[php] <?php $time_start = microtime(true);

for ($i = 0; $i < 1000; ++$i) {

if (preg_match("/[0-9]+/", $i)) { echo null; } }

$time_end = microtime(true); $time = $time_end - $time_start; echo "{$time} seconds\n";

[/php]

is_int

[php] <?php $time_start = microtime(true);

for ($i = 0; $i < 1000; ++$i) {

if (is_int($i)){ echo null; } }

$time_end = microtime(true); $time = $time_end - $time_start; echo "{$time} seconds\n"; [/php]

以下結果になります。

preg_match

0.00121688842773 seconds 0.00148296356201 seconds 0.00113606452942 seconds 0.00112891197205 seconds 0.00114893913269 seconds

is_int

0.000265121459961 seconds 0.000233888626099 seconds 0.000234127044678 seconds 0.000232934951782 seconds 0.000232934951782 seconds

当然の様にis_intの方が高速でした。

is_intについては公式のドキュメントを参照ください。

PHP: is_int - Manual

突っ込みどころなどあるかと存じますが、コメント等でお願い致します。