Issue #7968 has been updated by nagachika (Tomoyuki Chikanaga).


Hello, Alan.

I re-open this ticket because it was accidentally closed by wrong commit message.
This issue is not fixed yet.

BTW, in socketsendtest.rb UDPSocket#bind and #connect receive different port number. Is it right?
On my environment, I've got an exception.

  socketsendtest.rb:9:in `send': Connection refused - send(2) (Errno::ECONNREFUSED)

Thanks
----------------------------------------
Bug #7968: Poor UDPSocket#send performance in ruby 2.0.0 on windows
https://bugs.ruby-lang.org/issues/7968#change-37310

Author: cs96and (Alan Davies)
Status: Open
Priority: Normal
Assignee: cruby-windows
Category: platform/windows
Target version: 
ruby -v: ruby 2.0.0p0 (2013-02-24) [x64-mingw32]


I have noticed that the performance of UDPSocket#send on ruby 2.0.0 on windows is much poorer than that of 1.9.3 or 1.8.7.  Running the attahced script on 2.0.0 gives the following...

d:\scripts>bash -c "ruby --version"
ruby 2.0.0p0 (2013-02-24) [x64-mingw32]

d:\scripts>bash -c "time ruby socketsendtest.rb"

real    0m2.572s
user    0m0.000s
sys     0m0.016s

However, running the same test with 1.9.3 is much faster...

d:\scripts>pik 193

d:\scripts>bash -c "ruby --version"
ruby 1.9.3p374 (2013-01-15) [i386-mingw32]

d:\scripts>bash -c "time ruby socketsendtest.rb"

real    0m0.993s
user    0m0.015s
sys     0m0.016s

Additionally, if I change the send call to a print (commented out in the script), then the performance is fine on 2.0.0....

d:\scripts>pik 200

d:\scripts>bash -c "ruby --version"
ruby 2.0.0p0 (2013-02-24) [x64-mingw32]

d:\scripts>bash -c "time ruby socketsendtest.rb"

real    0m0.907s
user    0m0.000s
sys     0m0.015s

What is send() doing that print() doesn't do that is causing the massive performance drop?

Thanks
Alan.


-- 
http://bugs.ruby-lang.org/