Advertisement
fruffl

cast2int performance

Sep 28th, 2015
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 12.46 KB | None | 0 0
  1. PHP 5.6.13-1~dotdeb+7.1 Linux/fpm-fcgi - Mon, 28 Sep 2015 08:03:16 UTC
  2.  
  3.  
  4. * TEST #1: Comparison of results intval() and casting to integer:
  5.  
  6. #   INPUT                     EXPECTED      INTVAL()      CAST        RESULT
  7. ----------------------------------------------------------------------------
  8. #0  42                      : 42          / 42          / 42           pass.
  9. #1  -42                     : -42         / -42         / -42          pass.
  10. #2  4.2000000000000002      : 4           / 4           / 4            pass.
  11. #3  '42'                    : 42          / 42          / 42           pass.
  12. #4  '+42'                   : 42          / 42          / 42           pass.
  13. #5  '-42'                   : -42         / -42         / -42          pass.
  14. #6  042                     : 34          / 34          / 34           pass.
  15. #7  '042'                   : 42          / 42          / 42           pass.
  16. #8  1e10                    : 1410065408  / 10000000000 / 10000000000  failed.
  17. #9  '1e10'                  : 1           / 1           / 1            pass.
  18. #10 0x1A                    : 26          / 26          / 26           pass.
  19. #11 42000000                : 42000000    / 42000000    / 42000000     pass.
  20. #12 2147483647              : 2147483647  / 2147483647  / 2147483647   pass.
  21. #13 2147483648              : -2147483648 / 2147483648  / 2147483648   failed.
  22. #14 420000000000000000000   : 0           / -4275113695319687168 / -4275113695319687168  failed.
  23. #15 '420000000000000000000' : 2147483647  / 9223372036854775807 / 9223372036854775807  failed.
  24. #16 array()                 : 0           / 0           / 0            pass.
  25. #17 array('foo', 'bar')     : 1           / 1           / 1            pass.
  26.  
  27.  
  28. * TEST #2: Comparison of results intval() and 0 + $var:
  29.  
  30. #   INPUT                     EXPECTED      INTVAL()      0+$VAR      RESULT
  31. ----------------------------------------------------------------------------
  32. #0  42                      : 42          / 42          / 42           pass.
  33. #1  -42                     : -42         / -42         / -42          pass.
  34. #2  4.2000000000000002      : 4           / 4           / 4.2          different.
  35. #3  '42'                    : 42          / 42          / 42           pass.
  36. #4  '+42'                   : 42          / 42          / 42           pass.
  37. #5  '-42'                   : -42         / -42         / -42          pass.
  38. #6  042                     : 34          / 34          / 34           pass.
  39. #7  '042'                   : 42          / 42          / 42           pass.
  40. #8  1e10                    : 1410065408  / 10000000000 / 10000000000  different.
  41. #9  '1e10'                  : 1           / 1           / 10000000000  different.
  42. #10 0x1A                    : 26          / 26          / 26           pass.
  43. #11 42000000                : 42000000    / 42000000    / 42000000     pass.
  44. #12 2147483647              : 2147483647  / 2147483647  / 2147483647   pass.
  45. #13 2147483648              : -2147483648 / 2147483648  / 2147483648   different.
  46. #14 420000000000000000000   : 0           / -4275113695319687168 / 4.2E+20      different.
  47. #15 '420000000000000000000' : 2147483647  / 9223372036854775807 / 4.2E+20      different.
  48. #16 array()                 : 0           / 0           / error.       skipped.
  49. #17 array('foo', 'bar')     : 1           / 1           / error.       skipped.
  50.  
  51.  
  52. * TEST #3: abs((int)$val) vs. (int) abs($val)
  53.  
  54. #   INPUT                     ABS((INT)$val)   (INT)ABS($val)      RESULT
  55. ----------------------------------------------------------------------------
  56. #0  42                      : 42             / 42                 pass.
  57. #1  -42                     : 42             / 42                 pass.
  58. #2  4.2000000000000002      : 4              / 4                  pass.
  59. #3  '42'                    : 42             / 42                 pass.
  60. #4  '+42'                   : 42             / 42                 pass.
  61. #5  '-42'                   : 42             / 42                 pass.
  62. #6  042                     : 34             / 34                 pass.
  63. #7  '042'                   : 42             / 42                 pass.
  64. #8  1e10                    : 10000000000    / 10000000000        pass.
  65. #9  '1e10'                  : 1              / 10000000000        different.
  66. #10 0x1A                    : 26             / 26                 pass.
  67. #11 42000000                : 42000000       / 42000000           pass.
  68. #12 2147483647              : 2147483647     / 2147483647         pass.
  69. #13 2147483648              : 2147483648     / 2147483648         pass.
  70. #14 420000000000000000000   : 4275113695319687168 / -4275113695319687168        different.
  71. #15 '420000000000000000000' : 9223372036854775807 / -4275113695319687168        different.
  72. #16 array()                 : 0              / 0                  pass.
  73. #17 array('foo', 'bar')     : 1              / 0                  different.
  74.  
  75.  
  76. * TEST #4: abs((int)$val) vs. absint($val)
  77.  
  78. #   INPUT                     ABS((INT)$val)   ABSINT($val)       RESULT
  79. ----------------------------------------------------------------------------
  80. #0  42                      : 42             / 42                 pass.
  81. #1  -42                     : 42             / 42                 pass.
  82. #2  4.2000000000000002      : 4              / 4                  pass.
  83. #3  '42'                    : 42             / 42                 pass.
  84. #4  '+42'                   : 42             / 42                 pass.
  85. #5  '-42'                   : 42             / 42                 pass.
  86. #6  042                     : 34             / 34                 pass.
  87. #7  '042'                   : 42             / 42                 pass.
  88. #8  1e10                    : 10000000000    / 10000000000         pass.
  89. #9  '1e10'                  : 1              / 1                  pass.
  90. #10 0x1A                    : 26             / 26                 pass.
  91. #11 42000000                : 42000000       / 42000000           pass.
  92. #12 2147483647              : 2147483647     / 2147483647         pass.
  93. #13 2147483648              : 2147483648     / 2147483648         pass.
  94. #14 420000000000000000000   : 4275113695319687168 / 4275113695319687168         pass.
  95. #15 '420000000000000000000' : 9223372036854775807 / 9223372036854775807         pass.
  96. #16 array()                 : 0              / 0                  pass.
  97. #17 array('foo', 'bar')     : 1              / 1                  pass.
  98.  
  99.  
  100. * TEST #5: Speed comparison (int)$val  vs. intval($val)
  101.  
  102. #   INPUT                     (INT)$val        INTVAL($val)       RATIO
  103. ----------------------------------------------------------------------------
  104. #0  42                      : 0.019649       / 0.059026             300%
  105. #1  -42                     : 0.019575       / 0.058570             299%
  106. #2  4.2000000000000002      : 0.023672       / 0.061527             259%
  107. #3  '42'                    : 0.038063       / 0.078756             206%
  108. #4  '+42'                   : 0.042797       / 0.099648             232%
  109. #5  '-42'                   : 0.037901       / 0.081272             214%
  110. #6  042                     : 0.019567       / 0.058593             299%
  111. #7  '042'                   : 0.040407       / 0.081511             201%
  112. #8  1e10                    : 0.023506       / 0.060819             258%
  113. #9  '1e10'                  : 0.037048       / 0.081524             220%
  114. #10 0x1A                    : 0.019569       / 0.058692             299%
  115. #11 42000000                : 0.019557       / 0.058904             301%
  116. #12 2147483647              : 0.019562       / 0.059947             306%
  117. #13 2147483648              : 0.019565       / 0.058593             299%
  118. #14 420000000000000000000   : 0.027979       / 0.066534             237%
  119. #15 '420000000000000000000' : 0.067321       / 0.112629             167%
  120. #16 array()                 : 0.037010       / 0.079433             214%
  121. #17 array('foo', 'bar')     : 0.084682       / 0.128211             151%
  122. (100,000 iterations each)
  123.  
  124.  
  125. * TEST #6: Speed comparison settype() vs. intval()
  126.  
  127. #   INPUT                     SETTYPE()         INTVAL($val)       RATIO
  128. ----------------------------------------------------------------------------
  129. #0  42                      : 0.113645       / 0.062956              55%
  130. #1  -42                     : 0.114424       / 0.062663              54%
  131. #2  4.2000000000000002      : 0.120346       / 0.067399              56%
  132. #3  '42'                    : 0.139429       / 0.085149              61%
  133. #4  '+42'                   : 0.141750       / 0.083533              58%
  134. #5  '-42'                   : 0.142304       / 0.087167              61%
  135. #6  042                     : 0.116758       / 0.062508              53%
  136. #7  '042'                   : 0.139781       / 0.084500              60%
  137. #8  1e10                    : 0.120739       / 0.067286              55%
  138. #9  '1e10'                  : 0.138382       / 0.092748              67%
  139. #10 0x1A                    : 0.117223       / 0.062275              53%
  140. #11 42000000                : 0.117057       / 0.063798              54%
  141. #12 2147483647              : 0.116104       / 0.062882              54%
  142. #13 2147483648              : 0.117497       / 0.062950              53%
  143. #14 420000000000000000000   : 0.127691       / 0.070131              54%
  144. #15 '420000000000000000000' : 0.169796       / 0.112777              66%
  145. #16 array()                 : 0.139835       / 0.084739              60%
  146. #17 array('foo', 'bar')     : 0.202484       / 0.136293              67%
  147. (100,000 iterations each)
  148.  
  149.  
  150. * TEST #7: Speed comparison abs((int)$val) vs. absint($val)
  151.  
  152. #   INPUT                     ABS((INT)$val)   ABSINT($val)       RATIO
  153. ----------------------------------------------------------------------------
  154. #0  42                      : 0.066307       / 0.150921             227%
  155. #1  -42                     : 0.065941       / 0.151420             229%
  156. #2  4.2000000000000002      : 0.074758       / 0.158738             212%
  157. #3  '42'                    : 0.090069       / 0.170474             189%
  158. #4  '+42'                   : 0.090440       / 0.174109             192%
  159. #5  '-42'                   : 0.091308       / 0.177312             194%
  160. #6  042                     : 0.067929       / 0.156206             229%
  161. #7  '042'                   : 0.091375       / 0.172765             189%
  162. #8  1e10                    : 0.073454       / 0.160775             218%
  163. #9  '1e10'                  : 0.089249       / 0.172793             193%
  164. #10 0x1A                    : 0.067119       / 0.151738             226%
  165. #11 42000000                : 0.068211       / 0.154813             226%
  166. #12 2147483647              : 0.067085       / 0.154339             230%
  167. #13 2147483648              : 0.066594       / 0.151623             227%
  168. #14 420000000000000000000   : 0.077881       / 0.160110             205%
  169. #15 '420000000000000000000' : 0.118928       / 0.201531             169%
  170. #16 array()                 : 0.088283       / 0.179643             203%
  171. #17 array('foo', 'bar')     : 0.137562       / 0.236615             172%
  172. (100,000 iterations each)
  173.  
  174.  
  175. * TEST #8: Speed comparison (int)$val vs. 0 + $val
  176.  
  177. #   INPUT                     (INT)$val        0+$val             RATIO
  178. ----------------------------------------------------------------------------
  179. #0  42                      : 0.019557       / 0.018661              95%
  180. #1  -42                     : 0.019557       / 0.018655              95%
  181. #2  4.2000000000000002      : 0.023710       / 0.023309              98%
  182. #3  '42'                    : 0.045843       / 0.040522              88%
  183. #4  '+42'                   : 0.038204       / 0.041213             107%
  184. #5  '-42'                   : 0.038062       / 0.041229             108%
  185. #6  042                     : 0.019555       / 0.018667              95%
  186. #7  '042'                   : 0.039899       / 0.044523             111%
  187. #8  1e10                    : 0.023840       / 0.019164              80%
  188. #9  '1e10'                  : 0.038167       / 0.039795             104%
  189. #10 0x1A                    : 0.019552       / 0.018659              95%
  190. #11 42000000                : 0.019559       / 0.018670              95%
  191. #12 2147483647              : 0.019544       / 0.018674              95%
  192. #13 2147483648              : 0.019572       / 0.018669              95%
  193. #14 420000000000000000000   : 0.027924       / 0.019164              68%
  194. #15 '420000000000000000000' : 0.066800       / 0.153175             229%
  195. #16 array()                 : skipped.
  196. #17 array('foo', 'bar')     : skipped.
  197. (100,000 iterations each)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement