LoginSignup
23
26

More than 5 years have passed since last update.

[PHP] intval(), strval() より型キャストの方が速い

Posted at

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()の場合

以下で計測しました。
$ time php -r 'for ($i = 0; $i < 1000000; ++$i) { $a = strval(123456789); }'

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
23
26
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
26