3v4l.org

run code in 300+ PHP versions simultaneously
<?php define('ITERATIONS', 1000 * 1000); function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } function keywordsWithoutMatch() { return "value1|value2|cat|dog|Plan du scénario|Plan du Scénario"; } function keywordsWithMatch() { return "test|Lëtzebuergesch|Forgatókönyv|Pirate"; } $native = "Pirate"; function benchmarkInArray($native) { for ($i = 0; $i < ITERATIONS; $i++) { $keywordTypes = array( 'Given' => explode('|', keywordsWithoutMatch()), 'When' => explode('|', keywordsWithoutMatch()), 'Then' => explode('|', keywordsWithoutMatch()), 'And' => explode('|', keywordsWithoutMatch()), 'But' => explode('|', keywordsWithMatch()) ); foreach ($keywordTypes as $type => $keywords) { if (in_array($native, $keywords) || in_array($native . '<', $keywords)) { if ($type != 'But') throw new Exception(); break; } } } } function benchmarkInArrayWithCache($native) { $keywordTypes = array( 'Given' => explode('|', keywordsWithoutMatch()), 'When' => explode('|', keywordsWithoutMatch()), 'Then' => explode('|', keywordsWithoutMatch()), 'And' => explode('|', keywordsWithoutMatch()), 'But' => explode('|', keywordsWithMatch()) ); for ($i = 0; $i < ITERATIONS; $i++) { foreach ($keywordTypes as $type => $keywords) { if (in_array($native, $keywords) || in_array($native . '<', $keywords)) { if ($type != 'But') throw new Exception(); break; } } } } function benchmarkMbStrpos($native) { for ($i = 0; $i < ITERATIONS; $i++) { $keywordTypes = array( 'Given' => keywordsWithoutMatch(), 'When' => keywordsWithoutMatch(), 'Then' => keywordsWithoutMatch(), 'And' => keywordsWithoutMatch(), 'But' => keywordsWithMatch() ); foreach ($keywordTypes as $type => $keywords) { if (false !== mb_strpos($keywords, $native)) { if ($type != 'But') throw new Exception(); break; } } } } function benchmarkMbStrposWithCache($native) { $keywordTypes = array( 'Given' => keywordsWithoutMatch(), 'When' => keywordsWithoutMatch(), 'Then' => keywordsWithoutMatch(), 'And' => keywordsWithoutMatch(), 'But' => keywordsWithMatch() ); for ($i = 0; $i < ITERATIONS; $i++) { foreach ($keywordTypes as $type => $keywords) { if (false !== mb_strpos($keywords, $native)) { if ($type != 'But') throw new Exception(); break; } } } } $time_start = microtime_float(); benchmarkInArray($native); echo "benchmark in_array: " . (microtime_float() - $time_start) . "\n"; $time_start = microtime_float(); benchmarkInArrayWithCache($native); echo "benchmark in_array with cache: " . (microtime_float() - $time_start) . "\n"; $time_start = microtime_float(); benchmarkMbStrpos($native); echo "benchmark mb_strpos: " . (microtime_float() - $time_start) . "\n"; $time_start = microtime_float(); benchmarkMbStrposWithCache($native); echo "benchmark mb_strpos with cache: " . (microtime_float() - $time_start) . "\n";
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/4QWHv
function name:  (null)
number of ops:  54
compiled vars:  !0 = $native, !1 = $time_start
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   INIT_FCALL                                               'define'
          1        SEND_VAL                                                 'ITERATIONS'
          2        SEND_VAL                                                 1000000
          3        DO_ICALL                                                 
   21     4        ASSIGN                                                   !0, 'Pirate'
  103     5        INIT_FCALL                                               'microtime_float'
          6        DO_FCALL                                      0  $4      
          7        ASSIGN                                                   !1, $4
  104     8        INIT_FCALL                                               'benchmarkinarray'
          9        SEND_VAR                                                 !0
         10        DO_FCALL                                      0          
  105    11        INIT_FCALL                                               'microtime_float'
         12        DO_FCALL                                      0  $7      
         13        SUB                                              ~8      $7, !1
         14        CONCAT                                           ~9      'benchmark+in_array%3A+++++++++++++', ~8
         15        CONCAT                                           ~10     ~9, '%0A'
         16        ECHO                                                     ~10
  108    17        INIT_FCALL                                               'microtime_float'
         18        DO_FCALL                                      0  $11     
         19        ASSIGN                                                   !1, $11
  109    20        INIT_FCALL                                               'benchmarkinarraywithcache'
         21        SEND_VAR                                                 !0
         22        DO_FCALL                                      0          
  110    23        INIT_FCALL                                               'microtime_float'
         24        DO_FCALL                                      0  $14     
         25        SUB                                              ~15     $14, !1
         26        CONCAT                                           ~16     'benchmark+in_array+with+cache%3A++', ~15
         27        CONCAT                                           ~17     ~16, '%0A'
         28        ECHO                                                     ~17
  113    29        INIT_FCALL                                               'microtime_float'
         30        DO_FCALL                                      0  $18     
         31        ASSIGN                                                   !1, $18
  114    32        INIT_FCALL                                               'benchmarkmbstrpos'
         33        SEND_VAR                                                 !0
         34        DO_FCALL                                      0          
  115    35        INIT_FCALL                                               'microtime_float'
         36        DO_FCALL                                      0  $21     
         37        SUB                                              ~22     $21, !1
         38        CONCAT                                           ~23     'benchmark+mb_strpos%3A++++++++++++', ~22
         39        CONCAT                                           ~24     ~23, '%0A'
         40        ECHO                                                     ~24
  118    41        INIT_FCALL                                               'microtime_float'
         42        DO_FCALL                                      0  $25     
         43        ASSIGN                                                   !1, $25
  119    44        INIT_FCALL                                               'benchmarkmbstrposwithcache'
         45        SEND_VAR                                                 !0
         46        DO_FCALL                                      0          
  120    47        INIT_FCALL                                               'microtime_float'
         48        DO_FCALL                                      0  $28     
         49        SUB                                              ~29     $28, !1
         50        CONCAT                                           ~30     'benchmark+mb_strpos+with+cache%3A+', ~29
         51        CONCAT                                           ~31     ~30, '%0A'
         52        ECHO                                                     ~31
         53      > RETURN                                                   1

Function microtime_float:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/4QWHv
function name:  microtime_float
number of ops:  16
compiled vars:  !0 = $usec, !1 = $sec
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    7     0  E >   INIT_FCALL                                               'explode'
          1        SEND_VAL                                                 '+'
          2        INIT_FCALL                                               'microtime'
          3        DO_ICALL                                         $2      
          4        SEND_VAR                                                 $2
          5        DO_ICALL                                         $3      
          6        FETCH_LIST_R                                     $4      $3, 0
          7        ASSIGN                                                   !0, $4
          8        FETCH_LIST_R                                     $6      $3, 1
          9        ASSIGN                                                   !1, $6
         10        FREE                                                     $3
    8    11        CAST                                          5  ~8      !0
         12        CAST                                          5  ~9      !1
         13        ADD                                              ~10     ~8, ~9
         14      > RETURN                                                   ~10
    9    15*     > RETURN                                                   null

End of function microtime_float

Function keywordswithoutmatch:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/4QWHv
function name:  keywordsWithoutMatch
number of ops:  2
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   13     0  E > > RETURN                                                   'value1%7Cvalue2%7Ccat%7Cdog%7CPlan+du+sc%C3%A9nario%7CPlan+du+Sc%C3%A9nario'
   14     1*     > RETURN                                                   null

End of function keywordswithoutmatch

Function keywordswithmatch:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/4QWHv
function name:  keywordsWithMatch
number of ops:  2
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   18     0  E > > RETURN                                                   'test%7CL%C3%ABtzebuergesch%7CForgat%C3%B3k%C3%B6nyv%7CPirate'
   19     1*     > RETURN                                                   null

End of function keywordswithmatch

Function benchmarkinarray:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 63
Branch analysis from position: 63
2 jumps found. (Code = 44) Position 1 = 66, Position 2 = 3
Branch analysis from position: 66
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 3
2 jumps found. (Code = 77) Position 1 = 40, Position 2 = 61
Branch analysis from position: 40
2 jumps found. (Code = 78) Position 1 = 41, Position 2 = 61
Branch analysis from position: 41
2 jumps found. (Code = 47) Position 1 = 47, Position 2 = 53
Branch analysis from position: 47
2 jumps found. (Code = 43) Position 1 = 54, Position 2 = 60
Branch analysis from position: 54
2 jumps found. (Code = 43) Position 1 = 56, Position 2 = 59
Branch analysis from position: 56
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 59
1 jumps found. (Code = 42) Position 1 = 61
Branch analysis from position: 61
2 jumps found. (Code = 44) Position 1 = 66, Position 2 = 3
Branch analysis from position: 66
Branch analysis from position: 3
Branch analysis from position: 60
1 jumps found. (Code = 42) Position 1 = 40
Branch analysis from position: 40
Branch analysis from position: 53
Branch analysis from position: 61
Branch analysis from position: 61
filename:       /in/4QWHv
function name:  benchmarkInArray
number of ops:  67
compiled vars:  !0 = $native, !1 = $i, !2 = $keywordTypes, !3 = $keywords, !4 = $type
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   24     0  E >   RECV                                             !0      
   26     1        ASSIGN                                                   !1, 0
          2      > JMP                                                      ->63
   28     3    >   INIT_FCALL                                               'explode'
          4        SEND_VAL                                                 '%7C'
          5        INIT_FCALL                                               'keywordswithoutmatch'
          6        DO_FCALL                                      0  $6      
          7        SEND_VAR                                                 $6
          8        DO_ICALL                                         $7      
          9        INIT_ARRAY                                       ~8      $7, 'Given'
   29    10        INIT_FCALL                                               'explode'
         11        SEND_VAL                                                 '%7C'
         12        INIT_FCALL                                               'keywordswithoutmatch'
         13        DO_FCALL                                      0  $9      
         14        SEND_VAR                                                 $9
         15        DO_ICALL                                         $10     
         16        ADD_ARRAY_ELEMENT                                ~8      $10, 'When'
   30    17        INIT_FCALL                                               'explode'
         18        SEND_VAL                                                 '%7C'
         19        INIT_FCALL                                               'keywordswithoutmatch'
         20        DO_FCALL                                      0  $11     
         21        SEND_VAR                                                 $11
         22        DO_ICALL                                         $12     
         23        ADD_ARRAY_ELEMENT                                ~8      $12, 'Then'
   31    24        INIT_FCALL                                               'explode'
         25        SEND_VAL                                                 '%7C'
         26        INIT_FCALL                                               'keywordswithoutmatch'
         27        DO_FCALL                                      0  $13     
         28        SEND_VAR                                                 $13
         29        DO_ICALL                                         $14     
         30        ADD_ARRAY_ELEMENT                                ~8      $14, 'And'
   32    31        INIT_FCALL                                               'explode'
         32        SEND_VAL                                                 '%7C'
         33        INIT_FCALL                                               'keywordswithmatch'
         34        DO_FCALL                                      0  $15     
         35        SEND_VAR                                                 $15
         36        DO_ICALL                                         $16     
         37        ADD_ARRAY_ELEMENT                                ~8      $16, 'But'
   27    38        ASSIGN                                                   !2, ~8
   34    39      > FE_RESET_R                                       $18     !2, ->61
         40    > > FE_FETCH_R                                       ~19     $18, !3, ->61
         41    >   ASSIGN                                                   !4, ~19
   35    42        INIT_FCALL                                               'in_array'
         43        SEND_VAR                                                 !0
         44        SEND_VAR                                                 !3
         45        DO_ICALL                                         $21     
         46      > JMPNZ_EX                                         ~22     $21, ->53
         47    >   INIT_FCALL                                               'in_array'
         48        CONCAT                                           ~23     !0, '%3C'
         49        SEND_VAL                                                 ~23
         50        SEND_VAR                                                 !3
         51        DO_ICALL                                         $24     
         52        BOOL                                             ~22     $24
         53    > > JMPZ                                                     ~22, ->60
   36    54    >   IS_NOT_EQUAL                                             !4, 'But'
         55      > JMPZ                                                     ~25, ->59
         56    >   NEW                                              $26     'Exception'
         57        DO_FCALL                                      0          
         58      > THROW                                         0          $26
   37    59    > > JMP                                                      ->61
   34    60    > > JMP                                                      ->40
         61    >   FE_FREE                                                  $18
   26    62        PRE_INC                                                  !1
         63    >   FETCH_CONSTANT                                   ~29     'ITERATIONS'
         64        IS_SMALLER                                               !1, ~29
         65      > JMPNZ                                                    ~30, ->3
   41    66    > > RETURN                                                   null

End of function benchmarkinarray

Function benchmarkinarraywithcache:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 63
Branch analysis from position: 63
2 jumps found. (Code = 44) Position 1 = 66, Position 2 = 39
Branch analysis from position: 66
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 39
2 jumps found. (Code = 77) Position 1 = 40, Position 2 = 61
Branch analysis from position: 40
2 jumps found. (Code = 78) Position 1 = 41, Position 2 = 61
Branch analysis from position: 41
2 jumps found. (Code = 47) Position 1 = 47, Position 2 = 53
Branch analysis from position: 47
2 jumps found. (Code = 43) Position 1 = 54, Position 2 = 60
Branch analysis from position: 54
2 jumps found. (Code = 43) Position 1 = 56, Position 2 = 59
Branch analysis from position: 56
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 59
1 jumps found. (Code = 42) Position 1 = 61
Branch analysis from position: 61
2 jumps found. (Code = 44) Position 1 = 66, Position 2 = 39
Branch analysis from position: 66
Branch analysis from position: 39
Branch analysis from position: 60
1 jumps found. (Code = 42) Position 1 = 40
Branch analysis from position: 40
Branch analysis from position: 53
Branch analysis from position: 61
Branch analysis from position: 61
filename:       /in/4QWHv
function name:  benchmarkInArrayWithCache
number of ops:  67
compiled vars:  !0 = $native, !1 = $keywordTypes, !2 = $i, !3 = $keywords, !4 = $type
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   43     0  E >   RECV                                             !0      
   46     1        INIT_FCALL                                               'explode'
          2        SEND_VAL                                                 '%7C'
          3        INIT_FCALL                                               'keywordswithoutmatch'
          4        DO_FCALL                                      0  $5      
          5        SEND_VAR                                                 $5
          6        DO_ICALL                                         $6      
          7        INIT_ARRAY                                       ~7      $6, 'Given'
   47     8        INIT_FCALL                                               'explode'
          9        SEND_VAL                                                 '%7C'
         10        INIT_FCALL                                               'keywordswithoutmatch'
         11        DO_FCALL                                      0  $8      
         12        SEND_VAR                                                 $8
         13        DO_ICALL                                         $9      
         14        ADD_ARRAY_ELEMENT                                ~7      $9, 'When'
   48    15        INIT_FCALL                                               'explode'
         16        SEND_VAL                                                 '%7C'
         17        INIT_FCALL                                               'keywordswithoutmatch'
         18        DO_FCALL                                      0  $10     
         19        SEND_VAR                                                 $10
         20        DO_ICALL                                         $11     
         21        ADD_ARRAY_ELEMENT                                ~7      $11, 'Then'
   49    22        INIT_FCALL                                               'explode'
         23        SEND_VAL                                                 '%7C'
         24        INIT_FCALL                                               'keywordswithoutmatch'
         25        DO_FCALL                                      0  $12     
         26        SEND_VAR                                                 $12
         27        DO_ICALL                                         $13     
         28        ADD_ARRAY_ELEMENT                                ~7      $13, 'And'
   50    29        INIT_FCALL                                               'explode'
         30        SEND_VAL                                                 '%7C'
         31        INIT_FCALL                                               'keywordswithmatch'
         32        DO_FCALL                                      0  $14     
         33        SEND_VAR                                                 $14
         34        DO_ICALL                                         $15     
         35        ADD_ARRAY_ELEMENT                                ~7      $15, 'But'
   45    36        ASSIGN                                                   !1, ~7
   52    37        ASSIGN                                                   !2, 0
         38      > JMP                                                      ->63
   53    39    > > FE_RESET_R                                       $18     !1, ->61
         40    > > FE_FETCH_R                                       ~19     $18, !3, ->61
         41    >   ASSIGN                                                   !4, ~19
   54    42        INIT_FCALL                                               'in_array'
         43        SEND_VAR                                                 !0
         44        SEND_VAR                                                 !3
         45        DO_ICALL                                         $21     
         46      > JMPNZ_EX                                         ~22     $21, ->53
         47    >   INIT_FCALL                                               'in_array'
         48        CONCAT                                           ~23     !0, '%3C'
         49        SEND_VAL                                                 ~23
         50        SEND_VAR                                                 !3
         51        DO_ICALL                                         $24     
         52        BOOL                                             ~22     $24
         53    > > JMPZ                                                     ~22, ->60
   55    54    >   IS_NOT_EQUAL                                             !4, 'But'
         55      > JMPZ                                                     ~25, ->59
         56    >   NEW                                              $26     'Exception'
         57        DO_FCALL                                      0          
         58      > THROW                                         0          $26
   56    59    > > JMP                                                      ->61
   53    60    > > JMP                                                      ->40
         61    >   FE_FREE                                                  $18
   52    62        PRE_INC                                                  !2
         63    >   FETCH_CONSTANT                                   ~29     'ITERATIONS'
         64        IS_SMALLER                                               !2, ~29
         65      > JMPNZ                                                    ~30, ->39
   60    66    > > RETURN                                                   null

End of function benchmarkinarraywithcache

Function benchmarkmbstrpos:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 37
Branch analysis from position: 37
2 jumps found. (Code = 44) Position 1 = 40, Position 2 = 3
Branch analysis from position: 40
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 3
2 jumps found. (Code = 77) Position 1 = 20, Position 2 = 35
Branch analysis from position: 20
2 jumps found. (Code = 78) Position 1 = 21, Position 2 = 35
Branch analysis from position: 21
2 jumps found. (Code = 43) Position 1 = 28, Position 2 = 34
Branch analysis from position: 28
2 jumps found. (Code = 43) Position 1 = 30, Position 2 = 33
Branch analysis from position: 30
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 33
1 jumps found. (Code = 42) Position 1 = 35
Branch analysis from position: 35
2 jumps found. (Code = 44) Position 1 = 40, Position 2 = 3
Branch analysis from position: 40
Branch analysis from position: 3
Branch analysis from position: 34
1 jumps found. (Code = 42) Position 1 = 20
Branch analysis from position: 20
Branch analysis from position: 35
Branch analysis from position: 35
filename:       /in/4QWHv
function name:  benchmarkMbStrpos
number of ops:  41
compiled vars:  !0 = $native, !1 = $i, !2 = $keywordTypes, !3 = $keywords, !4 = $type
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   62     0  E >   RECV                                             !0      
   64     1        ASSIGN                                                   !1, 0
          2      > JMP                                                      ->37
   66     3    >   INIT_FCALL                                               'keywordswithoutmatch'
          4        DO_FCALL                                      0  $6      
          5        INIT_ARRAY                                       ~7      $6, 'Given'
   67     6        INIT_FCALL                                               'keywordswithoutmatch'
          7        DO_FCALL                                      0  $8      
          8        ADD_ARRAY_ELEMENT                                ~7      $8, 'When'
   68     9        INIT_FCALL                                               'keywordswithoutmatch'
         10        DO_FCALL                                      0  $9      
         11        ADD_ARRAY_ELEMENT                                ~7      $9, 'Then'
   69    12        INIT_FCALL                                               'keywordswithoutmatch'
         13        DO_FCALL                                      0  $10     
         14        ADD_ARRAY_ELEMENT                                ~7      $10, 'And'
   70    15        INIT_FCALL                                               'keywordswithmatch'
         16        DO_FCALL                                      0  $11     
         17        ADD_ARRAY_ELEMENT                                ~7      $11, 'But'
   65    18        ASSIGN                                                   !2, ~7
   72    19      > FE_RESET_R                                       $13     !2, ->35
         20    > > FE_FETCH_R                                       ~14     $13, !3, ->35
         21    >   ASSIGN                                                   !4, ~14
   73    22        INIT_FCALL                                               'mb_strpos'
         23        SEND_VAR                                                 !3
         24        SEND_VAR                                                 !0
         25        DO_ICALL                                         $16     
         26        TYPE_CHECK                                  1018          $16
         27      > JMPZ                                                     ~17, ->34
   74    28    >   IS_NOT_EQUAL                                             !4, 'But'
         29      > JMPZ                                                     ~18, ->33
         30    >   NEW                                              $19     'Exception'
         31        DO_FCALL                                      0          
         32      > THROW                                         0          $19
   75    33    > > JMP                                                      ->35
   72    34    > > JMP                                                      ->20
         35    >   FE_FREE                                                  $13
   64    36        PRE_INC                                                  !1
         37    >   FETCH_CONSTANT                                   ~22     'ITERATIONS'
         38        IS_SMALLER                                               !1, ~22
         39      > JMPNZ                                                    ~23, ->3
   79    40    > > RETURN                                                   null

End of function benchmarkmbstrpos

Function benchmarkmbstrposwithcache:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 37
Branch analysis from position: 37
2 jumps found. (Code = 44) Position 1 = 40, Position 2 = 19
Branch analysis from position: 40
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 19
2 jumps found. (Code = 77) Position 1 = 20, Position 2 = 35
Branch analysis from position: 20
2 jumps found. (Code = 78) Position 1 = 21, Position 2 = 35
Branch analysis from position: 21
2 jumps found. (Code = 43) Position 1 = 28, Position 2 = 34
Branch analysis from position: 28
2 jumps found. (Code = 43) Position 1 = 30, Position 2 = 33
Branch analysis from position: 30
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 33
1 jumps found. (Code = 42) Position 1 = 35
Branch analysis from position: 35
2 jumps found. (Code = 44) Position 1 = 40, Position 2 = 19
Branch analysis from position: 40
Branch analysis from position: 19
Branch analysis from position: 34
1 jumps found. (Code = 42) Position 1 = 20
Branch analysis from position: 20
Branch analysis from position: 35
Branch analysis from position: 35
filename:       /in/4QWHv
function name:  benchmarkMbStrposWithCache
number of ops:  41
compiled vars:  !0 = $native, !1 = $keywordTypes, !2 = $i, !3 = $keywords, !4 = $type
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   82     0  E >   RECV                                             !0      
   86     1        INIT_FCALL                                               'keywordswithoutmatch'
          2        DO_FCALL                                      0  $5      
          3        INIT_ARRAY                                       ~6      $5, 'Given'
   87     4        INIT_FCALL                                               'keywordswithoutmatch'
          5        DO_FCALL                                      0  $7      
          6        ADD_ARRAY_ELEMENT                                ~6      $7, 'When'
   88     7        INIT_FCALL                                               'keywordswithoutmatch'
          8        DO_FCALL                                      0  $8      
          9        ADD_ARRAY_ELEMENT                                ~6      $8, 'Then'
   89    10        INIT_FCALL                                               'keywordswithoutmatch'
         11        DO_FCALL                                      0  $9      
         12        ADD_ARRAY_ELEMENT                                ~6      $9, 'And'
   90    13        INIT_FCALL                                               'keywordswithmatch'
         14        DO_FCALL                                      0  $10     
         15        ADD_ARRAY_ELEMENT                                ~6      $10, 'But'
   85    16        ASSIGN                                                   !1, ~6
   92    17        ASSIGN                                                   !2, 0
         18      > JMP                                                      ->37
   93    19    > > FE_RESET_R                                       $13     !1, ->35
         20    > > FE_FETCH_R                                       ~14     $13, !3, ->35
         21    >   ASSIGN                                                   !4, ~14
   94    22        INIT_FCALL                                               'mb_strpos'
         23        SEND_VAR                                                 !3
         24        SEND_VAR                                                 !0
         25        DO_ICALL                                         $16     
         26        TYPE_CHECK                                  1018          $16
         27      > JMPZ                                                     ~17, ->34
   95    28    >   IS_NOT_EQUAL                                             !4, 'But'
         29      > JMPZ                                                     ~18, ->33
         30    >   NEW                                              $19     'Exception'
         31        DO_FCALL                                      0          
         32      > THROW                                         0          $19
   96    33    > > JMP                                                      ->35
   93    34    > > JMP                                                      ->20
         35    >   FE_FREE                                                  $13
   92    36        PRE_INC                                                  !2
         37    >   FETCH_CONSTANT                                   ~22     'ITERATIONS'
         38        IS_SMALLER                                               !2, ~22
         39      > JMPNZ                                                    ~23, ->19
  100    40    > > RETURN                                                   null

End of function benchmarkmbstrposwithcache

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
165.57 ms | 1418 KiB | 55 Q