< :the previous in number
^ :the list in numerical order
> :the next in number
P :the previous artilce (have the same parent)
N :the next article (the next thread)
|<:the top of this thread
>|:the next thread
^ :the parent (reply-to)
_:the child (an article replying to this)
>:the elder article having the same parent
<:the youger article having the same parent
---:split window and show thread lists
| :split window (vertically) and show thread lists
~ :close the thread frame
.:the index
..:the index of indices
"Sean Gilbertson" <prell / cfl.rr.com> wrote in message:
> I tested out some file downloads to make sure that those would not
> freeze anything, and they didnt seem to at all. Do you know of any
> other problem areas that I should look out for?
I don't know if this will apply to you, but on Win 2K, I have this program
using net/ftp:
#------------------------------------------------------------
require "net/ftp"
ftp = Net::FTP::new("ftp-srvr")
ftp.login("anonymous","")
a = ftp.dir("*.*")
puts a if $DEBUG
tb = Time::now
ftp.getbinaryfile("Sales.ppt","junk.bin")
ta = Time::now
puts "Ftp get took #{ta-tb} seconds"
tb = Time::now
ftp.putbinaryfile("junk.bin","junk.bin")
ta = Time::now
puts "Ftp put took #{ta-tb} seconds"
puts ftp.status if $DEBUG
ftp.close
#-----------------------------------------------------
Ran it:
C:\atest>ruby -wv tst_ftp1.rb
ruby 1.6.8 (2002-12-24) [i586-mswin32]
Ftp get took 20.248 seconds
Ftp put took 20.809 seconds
Ran it with profiler:
C:\atest>ruby -wv -rprofile tst_ftp1.rb
ruby 1.6.8 (2002-12-24) [i586-mswin32]
Ftp get took 23.703 seconds
Ftp put took 23.132 seconds
% cumulative self self total
time seconds seconds calls ms/call ms/call name
85.22 16.51 16.51 808 20.44 20.44 IO#read
6.97 17.87 1.35 3 450.33 6248.67 Kernel.loop
2.74 18.40 0.53 814 0.65 0.85 Proc#call
1.29 18.65 0.25 3 83.33 123.33 Kernel.require
1.19 18.88 0.23 821 0.28 0.28 IO#write
[snip]
Notice how IO#read took 85% of the time
Then ran the native ftp client:
C:\atest>ftp ftp-srvr
Connected to ftp-srvr.abc.xyz.com.
220 DBM-Team FTP Server
User (ftp-srvr.abc.xyz.com:(none)): anonymous
331 User name okay, please send complete E-mail address as password.
Password:
230 User logged in, proceed.
ftp> binary
200 Type set to I.
ftp> get Sales.ppt
200 PORT Command successful.
150 Opening BINARY mode data connection for Sales.ppt (1649152 bytes).
226 Transfer complete.
ftp: 1649152 bytes received in 0.26Seconds 6318.59Kbytes/sec.
ftp> put junk.bin
200 PORT Command successful.
150 Opening BINARY mode data connection for junk.bin.
226 Transfer complete.
ftp: 1649152 bytes sent in 0.22Seconds 7462.23Kbytes/sec.
ftp> quit
221 Goodbye!
C:\atest>
This was almost 100 times faster !
So I tried with Ruby 1.8 :
C:\atest>ruby -wv tst_ftp1.rb
ruby 1.8.0 (2003-03-03) [i386-mswin32]
Ftp get took 0.511 seconds
Ftp put took 0.831 seconds
Great !
But it is still twice as slow ...and with the profiler:
C:\atest>ruby -wv -rprofile tst_ftp1.rb
ruby 1.8.0 (2003-03-03) [i386-mswin32]
Ftp get took 1.533 seconds
Ftp put took 1.722 seconds
% cumulative self self total
time seconds seconds calls ms/call ms/call name
52.79 1.33 1.33 3 444.00 644.33 Kernel.loop
9.91 1.58 0.25 808 0.31 0.31 IO#read
8.76 1.80 0.22 821 0.27 0.27 IO#write
5.15 1.93 0.13 842 0.15 0.15 String#==
3.17 2.01 0.08 3 26.67 66.67 Kernel.require
2.38 2.07 0.06 16 3.75 3.75
MonitorMixin.mon_exit
1.98 2.12 0.05 1 50.00 50.00
Profiler__.start_profile
1.98 2.17 0.05 10 5.00 12.00 Net::FTP#voidresp
1.59 2.21 0.04 15 2.67 2.67 IO#readline
1.59 2.25 0.04 16 2.50 3.13
MonitorMixin.mon_enter
1.59 2.29 0.04 16 2.50 164.56
MonitorMixin.synchronize
1.19 2.32 0.03 15 2.00 4.67 Net::FTP#getline
1.19 2.35 0.03 1 30.00 30.00
TCPSocket#initialize
1.19 2.38 0.03 6 5.00 5.00
Module#attr_accessor
0.79 2.40 0.02 15 1.33 8.00 Net::FTP#getresp
0.79 2.42 0.02 15 1.33 6.00
Net::FTP#getmultiline
0.40 2.43 0.01 1 10.00 40.00 Net::FTP#login
[snip]
And this is with a small 1.6MB file. As the file size grows (I tried with
400 MB file)
the difference is staggering.
Something to think about, eh ?
-- shanko