Я пытаюсь одновременно изучить Perl 6 и параллелизм/параллелизм.Нужно простой пример параллелизма в Perl 6
Для простого обучения у меня есть папка с файлами 550 '.htm', и я хочу, чтобы общая сумма строк кода среди всех из них. До сих пор у меня есть следующее:
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;
Это дает сумму 577 449 примерно за 3 секунды.
Как бы переписать это, чтобы использовать идеи параллелизма Perl 6? Я понимаю, что спасенное время не будет много, но оно будет служить доказательством концепции.
что-то вроде 'мои $ total_lines = [+] @ files.race.map (* линий (:. ENC) .elems)', по сравнению с той, без '.race'? –
Christoph
Отлично. С .race это заняло приблизительно 2 секунды в среднем. Без .race, в среднем он занимает 2,6 секунды. – Herby