Sto cercando di imparare Perl 6 e parallelismo/concorrenza allo stesso tempo.È necessario un semplice esempio di parallelismo in Perl 6
Per un semplice esercizio di apprendimento, ho una cartella di 550 file ".htm" e voglio la somma totale di righe di codice tra tutti loro. Finora, ho questo:
use v6;
my $start_time = now;
my $exception;
my $total_lines = 0;
my @files = "c:/testdir".IO.dir(test =>/'.' htm $/);
for @files -> $file {
$total_lines += $file.lines.elems;
CATCH {
default { $exception = $_; } #some of the files error out for malformed utf-8
}
}
say $total_lines;
say now - $start_time;
Che dà una somma di 577,449 in circa 3 secondi.
Come potrei riscriverlo per sfruttare le idee di parallelismo di Perl 6? Mi rendo conto che il tempo risparmiato non sarà molto, ma funzionerà come prova del concetto.
qualcosa come 'i miei $ total_lines = [+] @ files.race.map (* linee (:. ENC) .elems)', rispetto a quello senza '.race'? –
Christoph
Grande. Con .race ci sono voluti circa 2 secondi in media. Senza .race, ci vogliono in media 2,6 secondi. – Herby