Also schrieb ich ein Skript, wo Sie eine Nummer eingeben können und das Programm wird die höchste Primzahl in diesem Bereich finden. Das Problem ist, dass in PHP diese Berechnung mit größeren Zahlen wirklich langsam ist, im Vergleich zu meiner JavaScript-Version, die genau dasselbe ist, aber viel schneller.PHP Mathe Berechnung wirklich langsam
//Here Is the PHP code:
<form>
<input type="text" name="input">
</form>
<?php
$input = $_GET['input'];
function Prime($num)
{
if($num < 2)
return false;
for ($i = 2; $i < $num; $i++)
{
if($num % $i == 0)
return false;
}
return true;
}
for($i = $input; $i > 0; $i--)
{
if(Prime($i))
echo $i;
if(Prime($i))
exit();
}
}
Hier ist die JavaScript-Variante:
<html>
<script>
var input = prompt("Enter The Number");
function Prime(num) {
for (var i = 2; i < num; i++) {
if(num % i == 0) {
return false;
}
}
return true;
}
for(var i = input; i > 0; i--){
if(Prime(i)){
document.write(i);
}
if(Prime(i)){
exit();
p.thisbreaksthecode();
}
}
</script>
</html>
Für den JavaScript-Code, die höchste Primzahl in 99.999.999 dauert 1,5 Sekunden zu finden. In PHP dauert es jedoch ganze 20 Sekunden. Angesichts der Tatsache, dass die beiden Codes abgesehen von der Syntax genau identisch sind. Das sagt mir, dass etwas nicht stimmt. Was könnte der Grund für diese langsame Berechnungsgeschwindigkeit sein? Liegt es an der Funktionsweise von PHP? Wie kann ich es reparieren?
Die erste Frage: Warum berechnen Sie die Primzahl zweimal? Die zweite Frage: Haben Sie über "Profiling" gelesen? – Sven
Sie vergleichen verschiedene Laufzeiten und Server/Client-Programmierung. Ich denke, dass eine Art Just-in-Time-Compilation einsetzt, wenn Ihre Javascript-Engine ausgeführt wird. – collapsar
dauert weniger als 2 Sekunden, um auf 3v4l.org auszuführen, wenn Sie die Primzahl nicht zweimal berechnen; und das, ohne den Code in irgendeiner Weise zu optimieren - http://3v4l.org/hdXNM/perf#tabs –