Daher war ich neugierig auf die Leistung einiger der in den Antworten genannten Methoden für eine große Anzahl von Ganzzahlen.
Vorbereitung
Ich habe nur ein Array von 1 Million zufälligen Ganzzahlen zwischen 0 und 100 erstellt. Dann habe ich sie implodiert, um die Zeichenfolge zu erhalten.
$integers = array();
for ($i = 0; $i < 1000000; $i++) {
$integers[] = rand(0, 100);
}
$long_string = implode(',', $integers);
Methode 1
Dies ist der einzige Liner aus Marks Antwort:
$integerIDs = array_map('intval', explode(',', $long_string));
Methode 2
Dies ist der JSON-Ansatz:
$integerIDs = json_decode('[' . $long_string . ']', true);
Methode 3
Ich habe mir diese als Modifikation von Marks Antwort ausgedacht. Dies verwendet immer noch die explode()
Funktion, aber anstatt aufzurufen, verwende array_map()
ich eine reguläre foreach
Schleife, um die Arbeit zu erledigen und den Overhead zu vermeiden array_map()
. Ich analysiere auch mit (int)
vs intval()
, aber ich habe beide ausprobiert, und es gibt keinen großen Unterschied in Bezug auf die Leistung.
$result_array = array();
$strings_array = explode(',', $long_string);
foreach ($strings_array as $each_number) {
$result_array[] = (int) $each_number;
}
Ergebnisse:
Method 1 Method 2 Method 3
0.4804770947 0.3608930111 0.3387751579
0.4748001099 0.363986969 0.3762528896
0.4625790119 0.3645150661 0.3335959911
0.5065748692 0.3570590019 0.3365750313
0.4803431034 0.4135499001 0.3330330849
0.4510772228 0.4421861172 0.341176033
0.503674984 0.3612480164 0.3561749458
0.5598649979 0.352314949 0.3766179085
0.4573421478 0.3527538776 0.3473439217
0.4863037268 0.3742785454 0.3488383293
Das Endergebnis ist der Durchschnitt. Es sieht so aus, als ob die erste Methode für 1 Million Ganzzahlen etwas langsamer war, aber ich habe keinen dreifachen Leistungsgewinn von Methode 2 bemerkt, wie in der Antwort angegeben. Es stellte sich heraus, dass die foreach
Schleife in meinem Fall die schnellste war. Ich habe das Benchmarking mit Xdebug durchgeführt.
Bearbeiten: Es ist eine Weile her, seit die Antwort ursprünglich veröffentlicht wurde. Zur Verdeutlichung wurde der Benchmark in PHP 5.6 durchgeführt.