1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
#!/usr/bin/perl
# Test code aiming at evaluating the cost of sysread system call
# This version reads byte by byte
# Comparison with first version demonstrate the interest of reimplementing
# some basic buffering in Taktuk connectors
my $iterations=$ARGV[0];
my ($un, $deux);
pipe($deux, $un);
my $pid;
my ($buffer1, $buffer2);
if ($pid = fork())
{
my $number = 1;
close($un);
#print "MON PID : $pid\n";
for (my $i=0;$i<$iterations;$i++)
{
for (my $j=0;$j<255;$j++)
{
$number = sysread($deux,$buffer2,1);
#print "$number octets lus : ",$buffer2;
#print "Caractere : ",$buffer2,"\n";
}
}
}
else
{
close($deux);
$buffer1 = "abcdefghijklmnopqrstuvwxyz";
for (my $i=0;$i<4;$i++)
{
$buffer1 = $buffer1.$buffer1;
}
#print "MON PID : $pid\n";
open(STDOUT,">&",$un);
close($un);
for (my $i=0;$i<$iterations;$i++)
{
syswrite(STDOUT,$buffer1,255);
}
exit 0;
}
|