Ich versuche, die Zwischenspeicherung zu verhindern, indem ich ein '? t=' an das Ende meiner JS-Dateien anhänge. Was ist der schnellste Weg, eine solche Zahl zu erhalten? time() oder rand() oder etwas anderes?
Antworten
Zu viele Anzeigen?
DevWay Agence
Punkte
45
Dieser Artikel ist schon etwas älter, aber hier ist ein Zeitvergleich für 10 Millionen Ausführungsfälle
Gesamtausführungszeit Test mt_rand : 0.0067805965741475 Min.
Gesamtausführungszeit Testrand : 0.0068778196970622 Min.
Gesamtausführungszeit Testzeit : 0.0088921149571737 Min.
es sieht so aus, als ob mt_rand etwas schneller ist.
$i=10000000;
$time_start_1 = microtime(true);
//test script 1
while($i--) {
mt_rand(1,100);
}
$time_end_1 = microtime(true);
$i=10000000;
$time_start_2 = microtime(true);
//test script 2
while($i--) {
rand(1,100);
}
$time_end_2 = microtime(true);
$i=10000000;
$time_start_3 = microtime(true);
//test script 3
while($i--) {
time();
}
$time_end_3 = microtime(true);
//dividing with 60 will give the execution time in minutes otherwise seconds
$execution_time_1 = ($time_end_1 - $time_start_1); // /60
$execution_time_2 = ($time_end_2 - $time_start_2); // /60
$execution_time_3 = ($time_end_3 - $time_start_3); // /60
//execution time of the script
echo '<br>';
echo '<b>Total Execution Time Test mt_rand :</b> '.($execution_time_1/60).' Mins'.'<br>';
echo '<b>Total Execution Time Test rand :</b> '.($execution_time_2/60).' Mins'.'<br>';
echo '<b>Total Execution Time Test time :</b> '.($execution_time_3/60).' Mins'.'<br>';
Nathan
Punkte
1640
- See previous answers
- Weitere Antworten anzeigen
0 Stimmen
Am schnellsten bedeutet am wenigsten ressourcenintensiv.
8 Stimmen
Warum sind Sie so besorgt über die Geschwindigkeit bei dieser speziellen Operation? Haben Sie ein Profil erstellt? Wie viel Zeit erwarten Sie zu sparen, wenn Sie das eine dem anderen vorziehen? ...erlauben Sie mir, etwas direkter zu sein: Es macht keinen bedeutenden Unterschied. Wir reden hier von einem Unterschied, der in Nanosekunden gemessen wird.
2 Stimmen
@Frank Farmer: Es macht immer noch Spaß, darüber zu reden :)
0 Stimmen
22 Millionen Seitenaufrufe pro Tag, jeder mit 6 nicht zwischenspeicherbaren Dateien. Selbst Nanosekunden machen also irgendwann einen Unterschied
3 Stimmen
6 * 22 Millionen * 10 Nanosekunden = 1,32 Sekunden. Das ist nicht viel, wenn man es auf einen Tag umrechnet.
1 Stimmen
@Shrapnel Ich stimme zu, dass er schlecht mit Zahlen umgehen kann, aber ich stimme nicht zu, die Frage ist nicht dumm. Und ich sehe keinen Grund, so persönlich zu werden.
1 Stimmen
Beachten Sie, dass diese Funktionen unterschiedliche Eigenschaften erfüllen:
time
gibt "eindeutige" Werte zurück, währendrand
gibt zufällige Werte zurück. Aber Einzigartigkeit ist nicht dasselbe wie Zufälligkeit.1 Stimmen
Es sieht so aus, als ob für den Fragesteller die Einzigartigkeit das oberste Ziel ist.
0 Stimmen
Wenn Sie sichergehen wollen, dass die zwischengespeicherte Version korrekt ist, können Sie anstelle eines Zufallswertes einen Hash an das Ende anhängen. Es macht normalerweise keinen Sinn, eine Datei mit identischem Inhalt zu liefern, wenn sie zwischengespeichert wurde.