Bytes_read => 40960,
BlockSize => 40960,
that's 40kb, not 4kb: 4096. And 4096 may not be the best setting on all systems. Ie. yours. You'd need to try various different settings.
You should also perform your testing with a considerably larger file than that 2kb README.
Also, try using Net::FTP itself rather than Net::FTP::Robust & Net::FTP::Throttle. Whilst they may be valuable, they are almost certainly going to slow things down somewhat.
But mostly, try turning off Debug--that will also slow things down.
I used a modified version of your script to grab the same 5MB file using Net::FTP and wget, and both achieve remarkably similar throughputs, with Net::FTP actually beating wget when I used a 4096 byte blocksize:
c:\test>wget --passive-ftp ftp://ftp.perl.org/pub/CPAN/ports/win32/Sta
+ndard/x86/perl-5.6.0.tar.gz
--04:26:04-- ftp://ftp.perl.org/pub/CPAN/ports/win32/Standard/x86/per
+l-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 ... d
+one.
==> 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
Hardly definitive, but worth a few trials.
The code I used:
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
|