<?php 
 
$tests  =  1000000 ; 
 
for (  $i  =  1 ;  $i  <=  $tests ;  $i  +=  1  )  { 
	preg_match ( '/a*b/' , 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac' ) ;  } 
 
printf (  "For /a*b/    : %1.15f  per iteration for %s  iterations\n " ,  ( $stop  -  $start ) / $tests ,  $tests  ) ;  
for (  $i  =  1 ;  $i  <=  $tests ;  $i  +=  1  )  { 
	preg_match ( '/(?>a*)b/' , 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac' ) ;  } 
 
printf (  "For /(?>a*)b/: %1.15f  per iteration for %s  iterations\n " ,  ( $stop  -  $start ) / $tests ,  $tests  ) ;  
for (  $i  =  1 ;  $i  <=  $tests ;  $i  +=  1  )  { 
	preg_match ( '/a*+b/' , 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac' ) ;  } 
 
printf (  "For /a*+b/   : %1.15f  per iteration for %s  iterations\n " ,  ( $stop  -  $start ) / $tests ,  $tests  ) ;  
for (  $i  =  1 ;  $i  <=  $tests ;  $i  +=  1  )  { 
	preg_match ( '/(?>a)*b/' , 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac' ) ;  } 
 
printf (  "For /(?>a)*b/: %1.15f  per iteration for %s  iterations\n " ,  ( $stop  -  $start ) / $tests ,  $tests  ) ; PD9waHAKCiR0ZXN0cyA9IDEwMDAwMDA7Cgokc3RhcnQgPSBtaWNyb3RpbWUoIFRSVUUgKTsKZm9yKCAkaSA9IDE7ICRpIDw9ICR0ZXN0czsgJGkgKz0gMSApIHsKCXByZWdfbWF0Y2goJy9hKmIvJywnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWMnKTsKfQokc3RvcCA9IG1pY3JvdGltZSggVFJVRSApOwoKcHJpbnRmKCAiRm9yIC9hKmIvICAgIDogJTEuMTVmIHBlciBpdGVyYXRpb24gZm9yICVzIGl0ZXJhdGlvbnNcbiIsICgkc3RvcCAtICRzdGFydCkvJHRlc3RzLCAkdGVzdHMgKTsKdW5zZXQoICRzdG9wLCAkc3RhcnQgKTsKCiRzdGFydCA9IG1pY3JvdGltZSggVFJVRSApOwpmb3IoICRpID0gMTsgJGkgPD0gJHRlc3RzOyAkaSArPSAxICkgewoJcHJlZ19tYXRjaCgnLyg/PmEqKWIvJywnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWMnKTsKfQokc3RvcCA9IG1pY3JvdGltZSggVFJVRSApOwoKcHJpbnRmKCAiRm9yIC8oPz5hKiliLzogJTEuMTVmIHBlciBpdGVyYXRpb24gZm9yICVzIGl0ZXJhdGlvbnNcbiIsICgkc3RvcCAtICRzdGFydCkvJHRlc3RzLCAkdGVzdHMgKTsKdW5zZXQoICRzdG9wLCAkc3RhcnQgKTsKCiRzdGFydCA9IG1pY3JvdGltZSggVFJVRSApOwpmb3IoICRpID0gMTsgJGkgPD0gJHRlc3RzOyAkaSArPSAxICkgewoJcHJlZ19tYXRjaCgnL2EqK2IvJywnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWMnKTsKfQokc3RvcCA9IG1pY3JvdGltZSggVFJVRSApOwoKcHJpbnRmKCAiRm9yIC9hKitiLyAgIDogJTEuMTVmIHBlciBpdGVyYXRpb24gZm9yICVzIGl0ZXJhdGlvbnNcbiIsICgkc3RvcCAtICRzdGFydCkvJHRlc3RzLCAkdGVzdHMgKTsKdW5zZXQoICRzdG9wLCAkc3RhcnQgKTsKCiRzdGFydCA9IG1pY3JvdGltZSggVFJVRSApOwpmb3IoICRpID0gMTsgJGkgPD0gJHRlc3RzOyAkaSArPSAxICkgewoJcHJlZ19tYXRjaCgnLyg/PmEpKmIvJywnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWMnKTsKfQokc3RvcCA9IG1pY3JvdGltZSggVFJVRSApOwoKcHJpbnRmKCAiRm9yIC8oPz5hKSpiLzogJTEuMTVmIHBlciBpdGVyYXRpb24gZm9yICVzIGl0ZXJhdGlvbnNcbiIsICgkc3RvcCAtICRzdGFydCkvJHRlc3RzLCAkdGVzdHMgKTsKdW5zZXQoICRzdG9wLCAkc3RhcnQgKTs=