Perl-script getNgramData.pl omzetten naar Go en C++.
Voor het compileren van de programma's, gebruik dit Makefile
Let op: De versie in Go werkt alleen voor data die is gecodeerd in utf-8 (of us-ascii).
Gebruik, voorbeeld:
zcat BESTAND.sfr | getNgramData.pl -c 1 -f 2 -g 1350
Data hier:
/net/aistaff/vannoord/z/Alpino/PosTagger/Construct/DATA
Relatieve executietijden, getest met ruim 4 miljoen regels:
|
32-bits |
64-bits |
|
Perl |
1.0 |
1.0 |
|
Perl |
-- |
0.8 |
|
Go |
0.7 |
1.4 |
|
Go |
-- |
0.6 |
|
C++ |
-- |
0.5 |
|
C++ |
-- |
0.3 |
32-bits: thuis
64-bits: op skuld, data op lokale schijf
Versie 2 is waarin het tellen zoveel mogelijk wordt uitgesteld tot alle data is verwerkt.
Versie 2 heeft een nieuwe optie: -s, laat gebruik van geheugen en tijd zien.
Test op volker met 411.415.402 regels, vanuit zcat:
Go versie 2: geheugen: 8.8% tijd: 1:23:33 C++ versie 2: geheugen: 4.0% tijd: 40:40
incrementele verwerking
Eerst de data in alle *.sfr-bestanden afzonderlijk tellen, en daarna de resultaten samenvoegen.
Als er maar een paar *.sfr-bestanden zijn veranderd hoef je niet alle data opnieuw te verwerken, en gaat het dus veel sneller.
Gebruik hiervoor dit script: MakeAll make.
Pas eventueel de opties aan in het script Makefile : OUTDIR, OPTPRE, OPTPOST
attachments
Download alles: PerlScriptGetNgramData.tar.gz