3v4l.org

run code in 300+ PHP versions simultaneously
<?php ini_set( 'display_errors', 1 ); error_reporting( E_ALL ); // Make a bit, honkin test array // You may need to adjust this depth to avoid memory limit errors $testArray = [ 'string' => 'string', 'int' => 1, 'float' => 1.1, 'bool' => true, 'date' => new Datetime('now'), 'array' => [ 'string' => 'string', 'int' => 1, 'float' => 1.1, 'bool' => true, 'date' => new Datetime('now'), 'array' => [ 'string' => 'string', 'int' => 1, 'float' => 1.1, 'bool' => true, 'date' => new Datetime('now'), ], ], fillArray(0, 5) ]; $numRuns = 10000000; // Time json encoding $start = microtime( true ); for ($i = 0; $i++; $i <= $numRuns) { json_encode( $testArray ); } $jsonTime = (microtime( true ) - $start); echo "JSON encoded in " . ($jsonTime/$numRuns) . " seconds\n"; // Time serialization $start = microtime( true ); for ($i = 0; $i++; $i <= $numRuns) { serialize( $testArray ); } $serializeTime = (microtime( true ) - $start); echo "PHP serialized in " . ($serializeTime/$numRuns) . " seconds\n"; // Compare them if ( $jsonTime < $serializeTime ) { echo "json_encode() was roughly " . number_format( ($serializeTime / $jsonTime - 1 ) * 100, 2 ) . "% faster than serialize()"; } else if ( $serializeTime < $jsonTime ) { echo "serialize() was roughly " . ($serializeTime ? number_format( ($jsonTime / $serializeTime - 1) * 100, 2 ) . '%' : 'insanely') . " faster than json_encode()"; } else { echo 'This is a draw'; } function fillArray( $depth, $max ) { static $seed; if ( is_null( $seed ) ) { $seed = array( 'a', 2, 'c', 4, 'e', 6, 'g', 8, 'i', 10 ); } if ( $depth < $max ) { $node = array(); foreach ( $seed as $key ) { $node[$key] = fillArray( $depth + 1, $max ); } return $node; } return 'empty'; }
Output for git.master, git.master_jit, rfc.property-hooks
JSON encoded in 9.5367431640625E-14 seconds PHP serialized in 0 seconds serialize() was roughly insanely faster than json_encode()

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
35.97 ms | 405 KiB | 5 Q