1. Warum muss man nach jeden Durchlauf die HashMap.dat wieder löschen, da ansonsten diese Exception hier fliegt:
Wirf doch mal zur Abwechslung einen Blick in den Code...
Aber gut, weil ich so guter Dinge bin verrat ich's dir: Beim zweiten Start werden die Daten einfach angehängt, aber das programm geht davon aus dass dem nicht so ist. Ergo passt die Implementierung nicht mehr zur Datei. Deshalb der Fehler. Ich war bis dato einfach zu faul das zu ändern...
2. Warum liegt bei mir die beste Schreibgeschwindigkeit um die 208 Mb/s bei etwa 7 000 000 Einträgen? Weniger und mehr Einträge geben eine schlechtere. Inwiefern hängt das mit den Cache zusammen?
Kann ich dir nicht sagen. Hab Windows nicht implementiert. Linux übrigens auch nicht ;-)
Was hälst du davon wenn du versuchst es raus zu finden?
3. Wow!!! Eine Schreibgeschwindigkeit von 208 Mb/s!!! CrystelDiskMark und normales Kopieren mit den Windows-Explorer erreichen in etwa 150 Mb/s!!!
Du kannst auch Äpfel mit Birnen vergleichen: "Wow, Äpfel sind viel runder als Birnen."
Mein Test schreibt 1Mio Einträge á 12bytes pro Schreibaktion. macht rund 1,2MB Blockgröße. Evtl. benutzt Windows und dein Benchmark eine andere Blockgröße?
Und wie hier schon erwähnt wurde: Je mehr man kopiert (insgesamt) desto eher stößt man an die Grenze des Caches. Hat man die Grenze erreicht, bricht die Geschwindigkeit ein. Mit 9Mio Einträgen in der Map bist du bei nur 108MB. Hier wurde aber von Cache-Grenzen bei 300MB berichtet... Womit wir wieder beim Thema Äpfel und Birnen wären..
Und um's nochmal klarzustellen:
Dieser Test sollte nur zeigen dass Java überhaupt solch einen "hohen" Durchsatz (mit Hilfe von AIO) schafft. Das ist kein Festplattenbenchmark oder ähnliches....
- Alex