Bytes_read => 40960, BlockSize => 40960, #### c:\test>wget --passive-ftp ftp://ftp.perl.org/pub/CPAN/ports/win32/Standard/x86/perl-5.6.0.tar.gz --04:26:04-- ftp://ftp.perl.org/pub/CPAN/ports/win32/Standard/x86/perl-5.6.0.tar.gz => `perl-5.6.0.tar.gz.1' Resolving ftp.perl.org... done. Connecting to ftp.perl.org[193.136.239.1]:21... connected. Logging in as anonymous ... Logged in! ==> SYST ... done. ==> PWD ... done. ==> TYPE I ... done. ==> CWD /pub/CPAN/ports/win32/Standard/x86 ... done. ==> PASV ... done. ==> RETR perl-5.6.0.tar.gz ... done. Length: 5,443,601 (unauthoritative) 100%[====================================>] 5,443,601 278.97K/s ETA 00:00 04:26:24 (278.97 KB/s) - `perl-5.6.0.tar.gz.1' saved [5443601] c:\test>ftp-get -SIZE=81920 Got 5443601 bytes at 273685.318/second c:\test>ftp-get -SIZE=40960 Got 5443601 bytes at 286686.382/second c:\test>ftp-get -SIZE=4096 Got 5443601 bytes at 300668.379/second #### #!/usr/bin/perl use strict; use warnings; use Time::HiRes qw[ time ]; use Net::FTP; ##::Robust; ##use Net::FTP::Throttle; ##use Log::Report; use constant HOST => 'ftp.perl.org'; use constant DIR => '/pub/CPAN/ports/win32/Standard/x86'; use constant FILE => 'perl-5.6.0.tar.gz'; our $SIZE ||= 4096; my $start = time; my $ftp = Net::FTP->new( HOST, #Debug => 1, Passive => 1, Timeout => 1, Bytes_read => $SIZE, BlockSize => $SIZE, # MegabitsPerSecond => 2 ) or die "Couldn't connect: $@\n"; $ftp->login('anonymous'); $ftp->cwd(DIR); $ftp->binary; $ftp->get(FILE); my $size = $ftp->size(FILE); $ftp->quit; printf "Got %d bytes at %.3f/second\n", $size, $size / ( time() - $start );