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 );