PHPの型変換関数に、intval()
、strval()
というのがありますが、それを使うより型キャストの方が実行速度が速いということを確かめるために、手元の MacBook Pro (Mountain Lion)で実行時間をはかってみました。
使ったPHPのバージョンは以下のようなものです。
$ php --version
PHP 5.4.32 (cli) (built: Aug 28 2014 06:57:23)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans
1. intval() vs (int)
intval()の場合
以下で計測しました
$ time php -r 'for ($i = 0; $i < 1000000; ++$i) { $a = intval("123456789"); }'
1回目:
real 0m0.910s
user 0m0.893s
sys 0m0.013s
2回目:
real 0m0.962s
user 0m0.945s
sys 0m0.012s
3回目:
real 0m0.877s
user 0m0.860s
sys 0m0.012s
(int)の場合
以下で計測しました
$ time php -r 'for ($i = 0; $i < 1000000; ++$i) { $a = (int) "123456789"; }'
1回目:
real 0m0.552s
user 0m0.200s
sys 0m0.012s
2回目:
real 0m0.222s
user 0m0.207s
sys 0m0.011s
3回目:
real 0m0.212s
user 0m0.197s
sys 0m0.011s
2. strval() vs (string)
strval()の場合
以下で計測しました。
1回目:
real 0m0.891s
user 0m0.874s
sys 0m0.012s
2回目:
real 0m0.901s
user 0m0.884s
sys 0m0.013s
3回目:
real 0m0.891s
user 0m0.875s
sys 0m0.012s
(string) の場合
以下で計測しました。
time php -r 'for ($i = 0; $i < 1000000; ++$i) { $a = (string) 123456789; }'
1回目:
real 0m0.228s
user 0m0.213s
sys 0m0.011s
2回目:
real 0m0.232s
user 0m0.217s
sys 0m0.011s
3回目:
real 0m0.225s
user 0m0.210s
sys 0m0.010s