Re: Benchmark for Scala, Ruby and Perl

"John W. Krahn" <[email protected]>
Newsgroups gmane.comp.lang.perl.beginners
Message-ID <[email protected]>
On 2022-01-15 00:04, Jon Smart wrote:
> 
> Hello Paul
> 
> Do you mean by undef $/ and with <$fh> we can read the file into memory 
> at one time?

$/ is the input record separator, newline by default.
If undefined that means that the whole file is treated as one single record.


> Yes that would be faster b/c we don't need to read file by each line, 
> which increases the disk IO.
> 
> Another questions:
> 1. what's the "truss" command?

truss is a "unix" command.  Search for "truss unix".


> 2. what's the syntax "<:mmap"?

mmap enables a memory mapped file.  I treats the file as if it were a 
chunk of memory instead of a file.

Depending on the size of the file and the amount of memory available it 
may not make a difference.  Benchmark to confirm.


> On 15.01.2022 15:45, Paul Procacci wrote:
>>
>> -------------------------------------
>> use strict;
>>
>> $/ = undef;

That is usually written as:

local $/;

because $/ is a global variable and you want to limit the scope of any 
change.


>> my %stopwords = do {
>>         open my $fh, '<:mmap', 'stopwords.txt' or die $!;
>>         map { $_ => 1; } split /\n/, <$fh>;
>> };
>>
>> my %count = do {
>>         my %res;
>>         open my $fh, '<:mmap', 'words.txt' or die $!;
>>         map { $res{$_}++ unless $stopwords{$_}; } split /\n/, <$fh>;
>>         %res;
>> };
>>
>> my $i=0;
>> for (sort {$count{$b} <=> $count{$a}} keys %count) {
>>     if ($i < 20) {
>>         print "$_ -> $count{$_}\n"
>>     } else {
>>        last;
>>     }
>>     $i ++;
>> }



John

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.