fruffl icon

cast2int performance

fruffl | 09/28/15 08:07:14 AM UTC | 0 ⭐ | 300 👁️ | Never ⏰ | []
PHP |

12.46 KB

|

None

|

0 👍

/

0 👎

PHP 5.6.13-1~dotdeb+7.1 Linux/fpm-fcgi - Mon, 28 Sep 2015 08:03:16 UTC 
 
 
* TEST #1: Comparison of results intval() and casting to integer:
 
#   INPUT                     EXPECTED      INTVAL()      CAST        RESULT
----------------------------------------------------------------------------
#0  42                      : 42          / 42          / 42           pass.
#1  -42                     : -42         / -42         / -42          pass.
#2  4.2000000000000002      : 4           / 4           / 4            pass.
#3  '42'                    : 42          / 42          / 42           pass.
#4  '+42'                   : 42          / 42          / 42           pass.
#5  '-42'                   : -42         / -42         / -42          pass.
#6  042                     : 34          / 34          / 34           pass.
#7  '042'                   : 42          / 42          / 42           pass.
#8  1e10                    : 1410065408  / 10000000000 / 10000000000  failed.
#9  '1e10'                  : 1           / 1           / 1            pass.
#10 0x1A                    : 26          / 26          / 26           pass.
#11 42000000                : 42000000    / 42000000    / 42000000     pass.
#12 2147483647              : 2147483647  / 2147483647  / 2147483647   pass.
#13 2147483648              : -2147483648 / 2147483648  / 2147483648   failed.
#14 420000000000000000000   : 0           / -4275113695319687168 / -4275113695319687168  failed.
#15 '420000000000000000000' : 2147483647  / 9223372036854775807 / 9223372036854775807  failed.
#16 array()                 : 0           / 0           / 0            pass.
#17 array('foo', 'bar')     : 1           / 1           / 1            pass.
 
 
* TEST #2: Comparison of results intval() and 0 + $var:
 
#   INPUT                     EXPECTED      INTVAL()      0+$VAR      RESULT
----------------------------------------------------------------------------
#0  42                      : 42          / 42          / 42           pass.
#1  -42                     : -42         / -42         / -42          pass.
#2  4.2000000000000002      : 4           / 4           / 4.2          different.
#3  '42'                    : 42          / 42          / 42           pass.
#4  '+42'                   : 42          / 42          / 42           pass.
#5  '-42'                   : -42         / -42         / -42          pass.
#6  042                     : 34          / 34          / 34           pass.
#7  '042'                   : 42          / 42          / 42           pass.
#8  1e10                    : 1410065408  / 10000000000 / 10000000000  different.
#9  '1e10'                  : 1           / 1           / 10000000000  different.
#10 0x1A                    : 26          / 26          / 26           pass.
#11 42000000                : 42000000    / 42000000    / 42000000     pass.
#12 2147483647              : 2147483647  / 2147483647  / 2147483647   pass.
#13 2147483648              : -2147483648 / 2147483648  / 2147483648   different.
#14 420000000000000000000   : 0           / -4275113695319687168 / 4.2E+20      different.
#15 '420000000000000000000' : 2147483647  / 9223372036854775807 / 4.2E+20      different.
#16 array()                 : 0           / 0           / error.       skipped.
#17 array('foo', 'bar')     : 1           / 1           / error.       skipped.
 
 
* TEST #3: abs((int)$val) vs. (int) abs($val) 
 
#   INPUT                     ABS((INT)$val)   (INT)ABS($val)      RESULT
----------------------------------------------------------------------------
#0  42                      : 42             / 42                 pass.
#1  -42                     : 42             / 42                 pass.
#2  4.2000000000000002      : 4              / 4                  pass.
#3  '42'                    : 42             / 42                 pass.
#4  '+42'                   : 42             / 42                 pass.
#5  '-42'                   : 42             / 42                 pass.
#6  042                     : 34             / 34                 pass.
#7  '042'                   : 42             / 42                 pass.
#8  1e10                    : 10000000000    / 10000000000        pass.
#9  '1e10'                  : 1              / 10000000000        different.
#10 0x1A                    : 26             / 26                 pass.
#11 42000000                : 42000000       / 42000000           pass.
#12 2147483647              : 2147483647     / 2147483647         pass.
#13 2147483648              : 2147483648     / 2147483648         pass.
#14 420000000000000000000   : 4275113695319687168 / -4275113695319687168        different.
#15 '420000000000000000000' : 9223372036854775807 / -4275113695319687168        different.
#16 array()                 : 0              / 0                  pass.
#17 array('foo', 'bar')     : 1              / 0                  different.
 
 
* TEST #4: abs((int)$val) vs. absint($val) 
 
#   INPUT                     ABS((INT)$val)   ABSINT($val)       RESULT
----------------------------------------------------------------------------
#0  42                      : 42             / 42                 pass.
#1  -42                     : 42             / 42                 pass.
#2  4.2000000000000002      : 4              / 4                  pass.
#3  '42'                    : 42             / 42                 pass.
#4  '+42'                   : 42             / 42                 pass.
#5  '-42'                   : 42             / 42                 pass.
#6  042                     : 34             / 34                 pass.
#7  '042'                   : 42             / 42                 pass.
#8  1e10                    : 10000000000    / 10000000000         pass.
#9  '1e10'                  : 1              / 1                  pass.
#10 0x1A                    : 26             / 26                 pass.
#11 42000000                : 42000000       / 42000000           pass.
#12 2147483647              : 2147483647     / 2147483647         pass.
#13 2147483648              : 2147483648     / 2147483648         pass.
#14 420000000000000000000   : 4275113695319687168 / 4275113695319687168         pass.
#15 '420000000000000000000' : 9223372036854775807 / 9223372036854775807         pass.
#16 array()                 : 0              / 0                  pass.
#17 array('foo', 'bar')     : 1              / 1                  pass.
 
 
* TEST #5: Speed comparison (int)$val  vs. intval($val) 
 
#   INPUT                     (INT)$val        INTVAL($val)       RATIO
----------------------------------------------------------------------------
#0  42                      : 0.019649       / 0.059026             300%
#1  -42                     : 0.019575       / 0.058570             299%
#2  4.2000000000000002      : 0.023672       / 0.061527             259%
#3  '42'                    : 0.038063       / 0.078756             206%
#4  '+42'                   : 0.042797       / 0.099648             232%
#5  '-42'                   : 0.037901       / 0.081272             214%
#6  042                     : 0.019567       / 0.058593             299%
#7  '042'                   : 0.040407       / 0.081511             201%
#8  1e10                    : 0.023506       / 0.060819             258%
#9  '1e10'                  : 0.037048       / 0.081524             220%
#10 0x1A                    : 0.019569       / 0.058692             299%
#11 42000000                : 0.019557       / 0.058904             301%
#12 2147483647              : 0.019562       / 0.059947             306%
#13 2147483648              : 0.019565       / 0.058593             299%
#14 420000000000000000000   : 0.027979       / 0.066534             237%
#15 '420000000000000000000' : 0.067321       / 0.112629             167%
#16 array()                 : 0.037010       / 0.079433             214%
#17 array('foo', 'bar')     : 0.084682       / 0.128211             151%
(100,000 iterations each)
 
 
* TEST #6: Speed comparison settype() vs. intval() 
 
#   INPUT                     SETTYPE()         INTVAL($val)       RATIO
----------------------------------------------------------------------------
#0  42                      : 0.113645       / 0.062956              55%
#1  -42                     : 0.114424       / 0.062663              54%
#2  4.2000000000000002      : 0.120346       / 0.067399              56%
#3  '42'                    : 0.139429       / 0.085149              61%
#4  '+42'                   : 0.141750       / 0.083533              58%
#5  '-42'                   : 0.142304       / 0.087167              61%
#6  042                     : 0.116758       / 0.062508              53%
#7  '042'                   : 0.139781       / 0.084500              60%
#8  1e10                    : 0.120739       / 0.067286              55%
#9  '1e10'                  : 0.138382       / 0.092748              67%
#10 0x1A                    : 0.117223       / 0.062275              53%
#11 42000000                : 0.117057       / 0.063798              54%
#12 2147483647              : 0.116104       / 0.062882              54%
#13 2147483648              : 0.117497       / 0.062950              53%
#14 420000000000000000000   : 0.127691       / 0.070131              54%
#15 '420000000000000000000' : 0.169796       / 0.112777              66%
#16 array()                 : 0.139835       / 0.084739              60%
#17 array('foo', 'bar')     : 0.202484       / 0.136293              67%
(100,000 iterations each)
 
 
* TEST #7: Speed comparison abs((int)$val) vs. absint($val) 
 
#   INPUT                     ABS((INT)$val)   ABSINT($val)       RATIO
----------------------------------------------------------------------------
#0  42                      : 0.066307       / 0.150921             227%
#1  -42                     : 0.065941       / 0.151420             229%
#2  4.2000000000000002      : 0.074758       / 0.158738             212%
#3  '42'                    : 0.090069       / 0.170474             189%
#4  '+42'                   : 0.090440       / 0.174109             192%
#5  '-42'                   : 0.091308       / 0.177312             194%
#6  042                     : 0.067929       / 0.156206             229%
#7  '042'                   : 0.091375       / 0.172765             189%
#8  1e10                    : 0.073454       / 0.160775             218%
#9  '1e10'                  : 0.089249       / 0.172793             193%
#10 0x1A                    : 0.067119       / 0.151738             226%
#11 42000000                : 0.068211       / 0.154813             226%
#12 2147483647              : 0.067085       / 0.154339             230%
#13 2147483648              : 0.066594       / 0.151623             227%
#14 420000000000000000000   : 0.077881       / 0.160110             205%
#15 '420000000000000000000' : 0.118928       / 0.201531             169%
#16 array()                 : 0.088283       / 0.179643             203%
#17 array('foo', 'bar')     : 0.137562       / 0.236615             172%
(100,000 iterations each)
 
 
* TEST #8: Speed comparison (int)$val vs. 0 + $val 
 
#   INPUT                     (INT)$val        0+$val             RATIO
----------------------------------------------------------------------------
#0  42                      : 0.019557       / 0.018661              95%
#1  -42                     : 0.019557       / 0.018655              95%
#2  4.2000000000000002      : 0.023710       / 0.023309              98%
#3  '42'                    : 0.045843       / 0.040522              88%
#4  '+42'                   : 0.038204       / 0.041213             107%
#5  '-42'                   : 0.038062       / 0.041229             108%
#6  042                     : 0.019555       / 0.018667              95%
#7  '042'                   : 0.039899       / 0.044523             111%
#8  1e10                    : 0.023840       / 0.019164              80%
#9  '1e10'                  : 0.038167       / 0.039795             104%
#10 0x1A                    : 0.019552       / 0.018659              95%
#11 42000000                : 0.019559       / 0.018670              95%
#12 2147483647              : 0.019544       / 0.018674              95%
#13 2147483648              : 0.019572       / 0.018669              95%
#14 420000000000000000000   : 0.027924       / 0.019164              68%
#15 '420000000000000000000' : 0.066800       / 0.153175             229%
#16 array()                 : skipped.
#17 array('foo', 'bar')     : skipped.
(100,000 iterations each)

Comments