[#42344] [ruby-trunk - Feature #5964][Open] Make Symbols an Alternate Syntax for Strings — Tom Wardrop <tom@...>

23 messages 2012/02/03

[#42443] [ruby-trunk - Bug #5985][Open] miniruby skews "make benchmark" results — Eric Wong <normalperson@...>

21 messages 2012/02/08

[#42444] [ruby-trunk - Bug #5986][Open] Segmentation Fault — Luis Matta <levmatta@...>

16 messages 2012/02/08

[#42471] [ruby-trunk - Feature #5995][Open] calling io_advise_internal() in read_all() — Masaki Matsushita <glass.saga@...>

20 messages 2012/02/10

[#42560] [ruby-trunk - Bug #6011][Open] ruby-1.9.3-p0/lib/webrick/utils.rb:184: [BUG] Segmentation fault — Vit Ondruch <v.ondruch@...>

12 messages 2012/02/13

[#42579] [ruby-trunk - Bug #6012][Open] Proc#source_location also return the column — Roger Pack <rogerpack2005@...>

14 messages 2012/02/14

[#42685] [ruby-trunk - Bug #6036][Open] Test failures in Fedora Rawhide/17 — Bohuslav Kabrda <bkabrda@...>

14 messages 2012/02/16

[#42697] [ruby-trunk - Bug #6040][Open] Transcoding test failure: Big5 to UTF8 not defined (MinGW) — Luis Lavena <luislavena@...>

10 messages 2012/02/16

[#42813] [ruby-trunk - Feature #6065][Open] Allow Bignum marshalling/unmarshalling from C API — Martin Bosslet <Martin.Bosslet@...>

22 messages 2012/02/23

[#42815] [ruby-trunk - Bug #6066][Open] Fix "control may reach end of non-void function" warnings for clang — Eric Hodel <drbrain@...7.net>

15 messages 2012/02/23

[#42857] [ruby-trunk - Feature #6074][Open] Allow alias arguments to have a comma — Thomas Sawyer <transfire@...>

20 messages 2012/02/24

[#42891] [ruby-trunk - Feature #6083][Open] Hide a Bignum definition — Koichi Sasada <redmine@...>

23 messages 2012/02/25

[#42906] [ruby-trunk - Bug #6085][Open] Treatment of Wrong Number of Arguments — Marc-Andre Lafortune <ruby-core@...>

14 messages 2012/02/25

[#42949] [ruby-trunk - Bug #6089][Open] Test suite fails with OpenSSL 1.0.1 — Vit Ondruch <v.ondruch@...>

13 messages 2012/02/26

[ruby-core:42983] Re: 50$ for answering my stackoverflow question about Ruby and GIL

From: Grigory Petrov <grigory.v.p@...>
Date: 2012-02-27 20:10:46 UTC
List: ruby-core #42983
I'm not so sure about that.

I assembled the following test code. It's very straightforward and
simple and will calculate an average splice time ( time scheduler will
assign to a thread that is not giving it up via Thread.pass):

require 'thread'
require 'time'
time = 10
items = []
threads = []
threads << Thread.new { loop { items << 1 } }
threads << Thread.new { loop { items << 2 } }
sleep time
threads.each( &:exit ).each( &:join )
changes = 0
for i in 1 ... items.count do
  changes += 1 if items[ i ] != items[ i - 1 ]
end
printf( "Switch time is %.3f seconds\n", time.to_f / (changes + 1) )

The results are astonishing:
Ubuntu: 0.010 second, ok
OSX 10.7: 0.200 second, wtf?
Windows XP: 0.350 second!!! WTF.

Switching threads 3-4 times per second on most popular OS'es is VERY
weird. Python slice is constant, around 10ms. And default thread
scheduling on all OS'es is around 10ms too.

This still don't explain terrible GUI hangs on Windows, but is very
weird by itself.

Best,
Grigory.

On Mon, Feb 27, 2012 at 11:17 PM, Eric Hodel <drbrain@segment7.net> wrote:
> On Feb 27, 2012, at 9:54 AM, Grigory Petrov wrote:
>> This hack works O_O. But why? What's the problem with this constants?
>> From code it seems to me that Ruby thread slice is 250 milliseconds.
>> Is it correct? If so, why so ridiculously big value - normal slice
>> size for Windows/OSX/nix is around 10-20 milliseconds.
>
> The "us" unit in programs is microseconds, not milliseconds (I imagine would be used to reduce confusion were it an ASCII character), so 0.25 milliseconds

In This Thread