Here's the Ruby script I threw together:
for n in 1...1000000 do
puts "#{n}"
end
Other pertinent information:
Ruby version: ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]
OS X version 10.9.2
2.4 GHz Core 2 Duo
4 GB RAM
Before leaving the office, I connected to the test machine through SSH. This is a straight SSH connection from a terminal, no VPN or anything like that. I ran the script with a simple
time ruby ./rubytest.rb
Results when SSH'd in:
Run 1:
real 0m54.064s
user 0m5.020s
sys 0m3.501s
Run 2:
real 0m53.146s
user 0m5.134s
sys 0m3.451s
Run 3:
real 0m54.862s
user 0m4.986s
sys 0m3.356s
Once I got home I ran the script on the terminal locally.
Run 1:
real 0m16.106s
user 0m5.324s
sys 0m3.840s
Run 2:
real 0m15.469s
user 0m5.307s
sys 0m3.771s
Run 3:
real 0m15.293s
user 0m5.344s
sys 0m3.750s
Was this something introduced by using SSH? I used SSH to connect to localhost and tried again...
Run 1:
real 0m10.477s
user 0m5.016s
sys 0m3.327s
Run 2:
real 0m10.894s
user 0m5.092s
sys 0m3.382s
Run 3:
real 0m11.278s
user 0m5.112s
sys 0m3.403s
I don't know the reason for this exactly. The amazing part was connecting to SSH locally and having it speed up the script. All I can figure is that SSH is compressing console output, and when I'm connected over the Internet the connection is still lagged but connecting from localhost gives an advantage despite processing overhead of the compression, and Ruby is somehow constrained to how fast the data can be dumped into the console (maybe it waits for some kind of acknowledgement that output is actually output before moving to the next calculation?)
For me it's speculation. I'll have to see if I can find answers somewhere.
NINJA EDIT: I posted the question to unix.stackexchange.com and got some excellent answers!
puts "#{n}"
end
Other pertinent information:
Ruby version: ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]
OS X version 10.9.2
2.4 GHz Core 2 Duo
4 GB RAM
Before leaving the office, I connected to the test machine through SSH. This is a straight SSH connection from a terminal, no VPN or anything like that. I ran the script with a simple
time ruby ./rubytest.rb
Results when SSH'd in:
Run 1:
real 0m54.064s
user 0m5.020s
sys 0m3.501s
Run 2:
real 0m53.146s
user 0m5.134s
sys 0m3.451s
Run 3:
real 0m54.862s
user 0m4.986s
sys 0m3.356s
Once I got home I ran the script on the terminal locally.
Run 1:
real 0m16.106s
user 0m5.324s
sys 0m3.840s
Run 2:
real 0m15.469s
user 0m5.307s
sys 0m3.771s
Run 3:
real 0m15.293s
user 0m5.344s
sys 0m3.750s
Was this something introduced by using SSH? I used SSH to connect to localhost and tried again...
Run 1:
real 0m10.477s
user 0m5.016s
sys 0m3.327s
Run 2:
real 0m10.894s
user 0m5.092s
sys 0m3.382s
Run 3:
real 0m11.278s
user 0m5.112s
sys 0m3.403s
I don't know the reason for this exactly. The amazing part was connecting to SSH locally and having it speed up the script. All I can figure is that SSH is compressing console output, and when I'm connected over the Internet the connection is still lagged but connecting from localhost gives an advantage despite processing overhead of the compression, and Ruby is somehow constrained to how fast the data can be dumped into the console (maybe it waits for some kind of acknowledgement that output is actually output before moving to the next calculation?)
For me it's speculation. I'll have to see if I can find answers somewhere.
NINJA EDIT: I posted the question to unix.stackexchange.com and got some excellent answers!
No comments:
Post a Comment