Questa la mia versione in Java:
Generate.java.
A leggere tutti i file da disco ci mette circa 800ms. Per creare un file di 5 gb ci impiega poco più di 4 minuti.
Codice:
➜ Contest time java contest.Generate file -D5GiB
java contest.Generate file -D5GiB 78.23s user 159.79s system 98% cpu 4:01.87 total
Non ho potuto provare la versione di tommo perché stdafx.h cozza un po' con osx e linux. Fare un confronto sullo stesso hardware sarebbe interessante ma non credo che ci sia una grande differenza tra i due. Una vota passato una certa dimensione il limite dovrebbe essere il disco.
Si potrebbe passare a nio per evitare di scopiazzare stringhe qua e là. Eliminare la regex e ripulirsi a mano il testo. Ed usare un executor per distribuire il lavoro tra i vari core. Ma non credo ne valga la pena.