Ich bin auf der Suche nach dem schnellsten Weg, um eine Ganzzahl-Division in PHP zu tun. zum Beispiel, 5/2 sollte 2 und 6/2 sollte 3 und so weiter sein. Wenn ich das einfach mache, wird PHP im ersten Fall 2.5 zurückgeben, die einzige Lösung, die ich finden konnte, war intval($my_number/2)
- was nicht so schnell ist, wie ich es möchte (aber gibt die erwarteten Ergebnisse).Integer-Division in PHP
kann mir jemand dabei helfen?
EDIT:
dank Ihnen allen für Ihre Ideen, habe ich das Skript postet von rubber_boots einige von ihnen mit 10.000.000 Iterationen zu testen, hier können Sie die Ergebnisse (MAMP auf einem 3 oder 4 Jahre alt sehen mit 2 GHz Intel Core 2 Duo) macbook:
start (10000000)
(int)...: 2.26 sec
floor(): 4.36 sec
int_divide(): 2.86 sec
bit-shift: 1.45 sec //note: only works for divisions through powers of 2
intval(): 4.51 sec
round() with PHP_ROUND_HALF_DOWN: 5.48 sec
bisher Bit-Verschiebung ist der schnellste Weg, aber ich werde diese Frage offen für einen Tag verlassen, wenn es um zu sehen, den andere possibilitys für ist ...
EDIT2:
die Ergebnisse aktualisiert, hinzugefügt round() mit PHP_ROUND_HALF_DOWN (dank Col._Shrapnel)
Einfach nur neugierig, wie in Ihrem Code beteiligten viele Berechnungen so zu machen eine Funktion Leistung-signifikant? –
5/2 sollte 4 sein? Ist das eine php Sache? – nvuono
Ich muss ungefähr 2-3 Millionen Berechnungen machen, wo die Verwendung des intval() - Dinges 30-40 Sekunden dauert (und ich denke, es ist möglich, dies 2 oder 3 mal schneller zu machen) – oezi