Ich habe einen Benchmark erstellt, um Flushes eines einfachen Dokuments mit zwei Feldern in verschiedenen Stapelgrößen zu profilieren:https://gist. github.com/2725976
$ php src/benchmark.php 10 100 1000 10000 20000 50000 100000
Flushing 10 items took 0.014058 seconds and 2097152 bytes
Flushing 100 items took 0.024325 seconds and 524288 bytes
Flushing 1000 items took 0.196992 seconds and 5505024 bytes
Flushing 10000 items took 2.563700 seconds and 57933824 bytes
Flushing 20000 items took 6.291873 seconds and 89915392 bytes
Flushing 50000 items took 19.118011 seconds and 240386048 bytes
Flushing 100000 items took 58.582809 seconds and 469499904 bytes
Wie Sie vielleicht erwarten, macht das tatsächliche Einfügen der Daten in Mongo nur einen kleinen Bruchteil dieser Messungen aus. Doctrine wird ziemlich viel Zeit damit verbringen, Schritte wie das Versenden von Ereignissen und die Berechnung von Änderungssätzen zu durchlaufen, wobei letztere erheblich von der Komplexität Ihres Domänenmodells beeinflusst werden.
Sie können alle Doktrinen-spezifischen Operationen in flush()
verfolgen indem Sie einen Blick auf UnitOfWork werfen::commit()
.