Benchmark (via http://codepad.org/jqOQkaZR):
<?php require "autoload.php"; function convertStdToCollectionReflection(array $stds, $entity, $initVars) { $records = array(); $class = $entity . '\\Entity'; foreach ($stds as $record) { $args = array(); foreach ($initVars as $var) { $args[] = $record->$var; } $reflect = new \ReflectionClass($class); $records[] = $reflect->newInstanceArgs($args); } return $records; } function convertStdToCollectionSplat(array $stds, $entity, $initVars) { $records = array(); $class = $entity . '\\Entity'; foreach ($stds as $record) { $args = array(); foreach ($initVars as $var) { $args[] = $record->$var; } $records[] = new $class(...$args); } return $records; } $dummyObject = array(); for ($i = 0; $i < 10; $i++) { $dummyclass = new \stdClass(); $dummyclass->id = $i; $dummyclass->description = 'Just a number... ' . $i; $dummyObject[] = $dummyclass; } print 'Start Reflection test' . PHP_EOL; $reflectionStart = microtime(true); for($i = 0; $i < 1000000; $i++) { convertStdToCollectionReflection( $dummyObject, 'Xcs\Core\Record', array( 'id', 'description' ) ); } $reflectionEnd = microtime(true); print 'Start Splat test' . PHP_EOL; $splatStart = microtime(true); for($i = 0; $i < 1000000; $i++) { convertStdToCollectionSplat( $dummyObject, 'Xcs\Core\Record', array( 'id', 'description' ) ); } $splatEnd = microtime(true); print PHP_EOL . 'OUTPUT:' . PHP_EOL; print 'Reflection: ' . ($reflectionEnd - $reflectionStart) . 's' . PHP_EOL; print 'Splat: ' . ($splatEnd - $splatStart) . 's' . PHP_EOL;