Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re^3: How to concatenate N binary buffers?

by choroba (Canon)
on Nov 14, 2012 at 07:57 UTC ( #1003761=note: print w/ replies, xml ) Need Help??


in reply to Re^2: How to concatenate N binary buffers?
in thread How to concatenate N binary buffers?

does the "." operator change the buffers or not?
T.I.T.S. Or, Try It To See.:
# perl -E '$s .= chr for 0 .. 31; say $s' | xxd 0000000: 0001 0203 0405 0607 0809 0a0b 0c0d 0e0f ................ 0000010: 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f ................ 0000020: 0a
I'll have no time to benchmark
I am afraid we will have no time to answer.
لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ


Comment on Re^3: How to concatenate N binary buffers?
Download Code
Re^4: How to concatenate N binary buffers?
by mantager (Sexton) on Nov 16, 2012 at 14:45 UTC

    So I took the time to benchmark:

    $ ./syswrite_or_concat.pl 1000000 Double syswrite: timethis 1000000: 2 wallclock secs ( 0.43 usr + 0.94 sys = 1.37 CPU +) @ 729927.01/s (n=1000000) Data concat: timethis 1000000: 1 wallclock secs ( 0.32 usr + 0.45 sys = 0.77 CPU +) @ 1298701.30/s (n=1000000) Data join: timethis 1000000: 1 wallclock secs ( 0.37 usr + 0.46 sys = 0.83 CPU +) @ 1204819.28/s (n=1000000)
    #!/usr/bin/env perl # ex: set tabstop=4 et syn=perl: use strict; use warnings; use 5.010.001; use Benchmark qw(timethis); use Fcntl; my $count = shift || 1_000_000; my $file = '/dev/shm/outfile'; my $bufsize = 256; my $data1 = chr(1) x $bufsize; my $data2 = chr(2) x $bufsize; say "Double syswrite: "; my $out; sysopen($out, $file, O_WRONLY|O_CREAT) or die "unable to write on $file"; timethis($count, sub { syswrite ($out, $data1, $bufsize) == $bufsize or die "unable to write whole data1 buffer"; syswrite ($out, $data2, $bufsize) == $bufsize or die "unable to write whole data2 buffer"; }); close $out; say "Data concat:"; sysopen($out, $file, O_WRONLY|O_CREAT) or die "unable to write on $file"; my $doublebuf = 2 * $bufsize; timethis($count, sub { syswrite ($out, $data1.$data2, $doublebuf) == $doublebuf or die "unable to write all data"; }); close $out; say "Data join:"; sysopen($out, $file, O_WRONLY|O_CREAT) or die "unable to write on $file"; timethis($count, sub { syswrite ($out, join('', $data1, $data2), $doublebuf) == $doublebu +f or die "unable to write all data"; }); close $out; unlink $file;

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1003761]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (18)
As of 2015-07-06 13:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (75 votes), past polls