/mobile Handheld Friendly website
Ubuntu : Intel® Q6600® one core |
Each table row shows performance measurements for this Perl program with a particular command-line input value N.
| N | CPU secs | Elapsed secs | Memory KB | Code B | ≈ CPU Load |
|---|---|---|---|---|---|
| 50,000 | 0.74 | 0.74 | 3,024 | 440 | 0% 0% 3% 100% |
| 500,000 | 7.47 | 7.48 | 11,884 | 440 | 0% 0% 0% 100% |
| 5,000,000 | 73.34 | 73.37 | 188,720 | 440 | 0% 0% 0% 100% |
Read the ↓ make, command line, and program output logs to see how this program was run.
Read regex-dna benchmark to see what this program should do.
This is perl 5, version 18, subversion 0 (v5.18.0) built for i686-linux
Compile-time options: HAS_TIMES PERLIO_LAYERS PERL_DONT_CREATE_GVSV
PERL_HASH_FUNC_ONE_AT_A_TIME_HARD PERL_MALLOC_WRAP
PERL_PRESERVE_IVUV PERL_SAWAMPERSAND USE_LARGE_FILES
USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE
USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF
# The Computer Language Benchmarks Game # http://benchmarksgame.alioth.debian.org/ # contributed by Danny Sauer # completely rewritten and # cleaned up for speed and fun by Mirco Wahab # improved STDIN read, regex clean up by Jake Berner use strict; use warnings; my $l_file = -s STDIN; my $content; read STDIN, $content, $l_file; # this is significantly faster than using <> in this case my $dispose = qr/(^>.*)?\n/m; # slight performance gain here $content =~ s/$dispose//g; my $l_code = length $content; my @seq = ( 'agggtaaa|tttaccct', '[cgt]gggtaaa|tttaccc[acg]', 'a[act]ggtaaa|tttacc[agt]t', 'ag[act]gtaaa|tttac[agt]ct', 'agg[act]taaa|ttta[agt]cct', 'aggg[acg]aaa|ttt[cgt]ccct', 'agggt[cgt]aa|tt[acg]accct', 'agggta[cgt]a|t[acg]taccct', 'agggtaa[cgt]|[acg]ttaccct' ); my @cnt = (0) x @seq; for my $k (0..$#seq) { ++$cnt[$k] while $content=~/$seq[$k]/gi; printf "$seq[$k] $cnt[$k]\n" } my %iub = ( B => '(c|g|t)', D => '(a|g|t)', H => '(a|c|t)', K => '(g|t)', M => '(a|c)', N => '(a|c|g|t)', R => '(a|g)', S => '(c|g)', V => '(a|c|g)', W => '(a|t)', Y => '(c|t)' ); # using $& and no submatch marginally improves the # speed here, but mentioning $& causes perl to # define that value for the @seq patterns too, which # slows those down considerably. No change. my $findiub = '(['.(join '', keys %iub).'])'; $content =~ s/$findiub/$iub{$1}/g; printf "\n%d\n%d\n%d\n", $l_file, $l_code, length $content;
Tue, 21 May 2013 20:38:22 GMT COMMAND LINE: /usr/local/src/perl-5.18.0_no_ithreads_no_multi/bin/perl regexdna.perl-4.perl 0 < regexdna-input5000000.txt PROGRAM OUTPUT: agggtaaa|tttaccct 356 [cgt]gggtaaa|tttaccc[acg] 1250 a[act]ggtaaa|tttacc[agt]t 4252 ag[act]gtaaa|tttac[agt]ct 2894 agg[act]taaa|ttta[agt]cct 5435 aggg[acg]aaa|ttt[cgt]ccct 1537 agggt[cgt]aa|tt[acg]accct 1431 agggta[cgt]a|t[acg]taccct 1608 agggtaa[cgt]|[acg]ttaccct 2178 50833411 50000000 66800214