Moin Dedlfix:
Deine Vorschläge lesen sich, eigentlich logisch. Aber wie das so ist, sind „Glaube“ und „Messen“ für den Tekki und den Theologiestudent jeweils ganz verschiedene Begriffe. Ich messe wie folgt:
<?php
$z=1000000;
for ( $i=0; $i<$z; $i++ ) {
$a[$i] = sin($i);
$b[$i] = cos($i);
}
function tausch_rakete( $a, $b ) {
$c = ( $b - $a );
}
$s = microtime( true );
for( $i=0; $i<$z; $i++ ) {
tausch_rakete( $a[$i], $b[$i] );
}
echo "tausch_rakete:\t" . ( microtime( true ) - $s ) . PHP_EOL;
function tausch_dedlfix( $a, $b ) {
list($a, $b) = [ $b, $a ];
}
$s = microtime( true );
for( $i=0; $i<$z; $i++ ) {
tausch_dedlfix( $a[$i], $b[$i] );
}
echo "tausch_dedlfix:\t" . ( microtime( true ) - $s ) . PHP_EOL;
function cmp_rakete( $a, $b ) {
if ($a > $b ) return -1;
if ($a < $b ) return 1;
return 0;
}
$s = microtime( true );
for( $i=0; $i<$z; $i++ ) {
cmp_rakete( $a[$i], $b[$i] );
}
echo "cmp_rakete:\t" . ( microtime( true ) - $s ) . PHP_EOL;
function cmp_dedlfix( $a, $b ) {
return ( $b - $a );
}
$s = microtime( true );
for( $i=0; $i<$z; $i++ ) {
cmp_dedlfix( $a[$i], $b[$i] );
}
echo "cmp_dedlfix:\t" . ( microtime( true ) - $s ) . PHP_EOL;
… und erhalte diese bzw. solche Ergebnisse:
Ausgaben auf einem System mit „AMD Ryzen 7 2700 Eight-Core Processor“ und „PHP 7.2.24-0ubuntu0.18.04.4 (cli) (built: Apr 8 2020 15:45:57) ( NTS )“
tausch_rakete: 0.74383616447449
tausch_dedlfix: 0.92750906944275
cmp_rakete: 0.74426603317261
cmp_dedlfix: 0.71443104743958
Ausgaben auf einem System mit „Cortex-A72“ und „PHP 7.4.4 (cli) (built: Mar 20 2020 14:30:40) ( NTS )“
tausch_rakete: 0.17790603637695
tausch_dedlfix: 0.350172996521
cmp_rakete: 0.18490481376648
cmp_dedlfix: 0.16062998771667
Fazit:
Tatsächlich! Bezüglich des Vergleiches erscheint Deine Lösung also als etwas performanter.