Zitat:
Zitat von mermshaus
Allerdings hast du in den Funktionsdeklarationen ein paar Referenzen vergessen und ich glaube außerdem, dass das Schreiben eher mit $a[0] = 0; geprüft werden sollte, da er sonst nicht zu "copy on write" gezwungen ist.
|
Hoppla! Aber schön zu sehen, dass mal jemand mitdenkt.

Ich habe die Änderungen bei mir eingebaut und bekomme nun folgendes Ergebnis:
Code:
runs: 10000
size: 1000
0.09898 µs - 262144 Bytes - t_
0.75642 µs - 262144 Bytes - t_ref
0.09707 µs - 262144 Bytes - t_hint
0.76185 µs - 262144 Bytes - t_hint_ref
0.09850 µs - 262144 Bytes - t_read
0.75838 µs - 262144 Bytes - t_ref_read
0.09799 µs - 262144 Bytes - t_hint_read
0.75783 µs - 262144 Bytes - t_hint_ref_read
0.75742 µs - 262144 Bytes - t_write
0.75714 µs - 262144 Bytes - t_ref_write
0.75930 µs - 262144 Bytes - t_hint_write
0.76103 µs - 262144 Bytes - t_hint_ref_write
0.75953 µs - 262144 Bytes - t_read_write
0.76118 µs - 262144 Bytes - t_ref_read_write
0.75907 µs - 262144 Bytes - t_hint_read_write
0.75785 µs - 262144 Bytes - t_hint_ref_read_write
Bei gleichem runs und size läuft das bei mir also dreimal so schnell. *flame*
Zitat:
|
Vorläufiges Fazit: Es ist vermutlich immer eine sehr ineffiziente Idee ist, Arrays als Referenz zu übergeben.
|
Ich überlasse es immer der Intelligenz des Interpreters. Nur wenn ich in einem fremden Scope das Original ändern möchte
und das Original sehr groß ist, übergeb ich es als Referenz. Das mache ich nicht um Zeit zu sparen, sondern Speicher.
Ich wußte bisher nicht, dass read-only Funktionen wie count() nicht mit Referenzen arbeiten können. Imho wirklich ein Bug, denn was nützt die RefCount-erei, wenn dann für sowas wie count() doch eine Kopie erzeugt wird.