From: Chasecreek Systemhouse <[EMAIL PROTECTED]>
> On Sun, 31 Oct 2004 22:04:33 +0100, Jenda Krynicky <[EMAIL PROTECTED]>
> wrote:
>
> > Something like that. 1024 is one K. So 8*1024 is 8KB.
> >
> > I don't know what the size of a block is when reading from the
> > particular disk storing that file, but the block size is usualy some
> > power of 2 in KB. 2KB, 4KB, 8KB, 16KB, 32KB. It would of course be
> > most efficient if I was reading the file in chunks equal to the
> > block size, but 8KB seems to me like a reasonable guess.
>
>
> PMFJI =)
>
> I would like to think that high-level programmers simply read and
> write $strings, @arrays, etc, and allow the under-lying OpSys (XP,
> Solaris, FC3, etc) to worry about the file access methods.
>
> Operating systems can access data at whatever speed the filesystem
> format (Ext2, Ext3, Reiser, Quorums, Raids, Fly-swatter) would allow
> without people generally having to worry about sectors, blocks, etc.
That's why I would not sweat about this too much. But if I can make
the computer's work easier just by choosing a good constant I will.
It seems though that the constant doesn't matter much. I've tried to
copy a 709MB file using a tiny script that looked like this:
open IN, '<', 'Kour.avi';
open OUT, '>', 'Kour.avi.out';
binmode(IN);binmode(OUT);
my $time = time();
my $buff;
while(read IN, $buff, 32*1024) {
print OUT $buff;
}
print "Done in " . (time() - $time) . " seconds\n";
and it took 171s with 8*1024 and 176 with 5000 and 32*1024 byte
chunks.
OTOH converting it to sysopen/sysread/syswrite made a big difference.
THe time went down to 79s with 32*1024 byte chunks but 180-185s with
5000 byte ones.
use Fcntl;
sysopen IN, 'Kour.avi', O_RDONLY;
sysopen OUT, 'Kour.avi.out', O_WRONLY | O_CREAT;
my $time = time();
my $buff;
while(sysread IN, $buff, 32*1024) {
syswrite(OUT, $buff);
}
print "Done in " . (time() - $time) . " seconds\n";
Of course under normal circumstances you have much better things to
worry about than what chunksize to use ;-)
Jenda
===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz =====
When it comes to wine, women and song, wizards are allowed
to get drunk and croon as much as they like.
-- Terry Pratchett in Sourcery
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>