3v4l.org

run code in 300+ PHP versions simultaneously
<?php $test_data_1k = array_fill( 0, 1000, 'X' ); function fastcount( &$array ) { end($array); $k = key($array); reset($array); return $k; } function bench( $reps, &$data, $callback ) { $start_t = microtime(true); ob_start(); for( $i = 0; $i < $reps; $i++ ) { call_user_func( $callback, $data ); } ob_end_clean(); $total_t = microtime(true) - $start_t; return $total_t; } function while_each( &$data ) { while( $i = each($data) ) { echo $i[1]; } } function foreach_loop( &$data ) { foreach( $data as &$item ) { echo $item; } } function indexed_foreach_loop( &$data ) { foreach( $data as $i => &$x ) { echo $data[$i]; } } function optimal_loop( &$data ) { for( $i = 0, $max = count($data); $i < $max; $i++ ) { echo $data[$i]; } } function inlined_fastcount( &$data ) { end($data); $max = key($data); for( $i = 0; $i <= $max; $i++ ) { echo $data[$i]; } } function iterator_with_fastcount( &$data ) { for( $i = 0; $i < fastcount($data); $i++ ) { echo $data[$i]; } } function iterator_with_count( &$data ) { for( $i = 0; $i < count($data); $i++ ) { echo $data[$i]; } } echo 'Foreach: ' . bench( 10, $test_data_1k, 'foreach_loop' ) . "\n"; echo 'Indexed Foreach: ' . bench( 10, $test_data_1k, 'indexed_foreach_loop' ) . "\n"; echo 'Inlined FastCount: ' . bench( 10, $test_data_1k, 'inlined_fastcount' ) . "\n"; echo 'Optimal Loop: ' . bench( 10, $test_data_1k, 'optimal_loop' ) . "\n"; echo 'While-Each: ' . bench( 10, $test_data_1k, 'while_each' ) . "\n"; echo 'With FastCount: ' . bench( 10, $test_data_1k, 'iterator_with_fastcount' ) . "\n"; echo 'With Count: ' . bench( 10, $test_data_1k, 'iterator_with_count' ) . "\n";

preferences:
25.1 ms | 402 KiB | 5 Q