[#28687] [Bug #2973] rb_bug - Segmentation fault - error.c:213 — rudolf gavlas <redmine@...>

Bug #2973: rb_bug - Segmentation fault - error.c:213

10 messages 2010/03/16

[#28735] [Bug #2982] Ruby tries to link with both openssl and readline — Lucas Nussbaum <redmine@...>

Bug #2982: Ruby tries to link with both openssl and readline

16 messages 2010/03/18

[#28736] [Bug #2983] Ruby (GPLv2 only) tries to link to with readline (now GPLv3) — Lucas Nussbaum <redmine@...>

Bug #2983: Ruby (GPLv2 only) tries to link to with readline (now GPLv3)

10 messages 2010/03/18

[#28907] [Bug #3000] Open SSL Segfaults — Christian Höltje <redmine@...>

Bug #3000: Open SSL Segfaults

19 messages 2010/03/23

[#28924] [Bug #3005] Ruby core dump - [BUG] rb_sys_fail() - errno == 0 — Sebastian YEPES <redmine@...>

Bug #3005: Ruby core dump - [BUG] rb_sys_fail() - errno == 0

10 messages 2010/03/24

[#28954] [Feature #3010] slow require gems in ruby 1.9.1 — Miao Jiang <redmine@...>

Feature #3010: slow require gems in ruby 1.9.1

15 messages 2010/03/24

[#29179] [Bug #3071] Convert rubygems and rdoc to use psych — Aaron Patterson <redmine@...>

Bug #3071: Convert rubygems and rdoc to use psych

10 messages 2010/03/31

[ruby-core:28551] Re: [Feature #905] Add String.new(fixnum) to preallocate large buffer

From: Yusuke ENDOH <mame@...>
Date: 2010-03-08 03:39:42 UTC
List: ruby-core #28551
Hi,

2010/3/8 Charles Oliver Nutter <headius@headius.com>:
>> Indeed, there is room for optimization in MRI, but in this case,
>> it is not in string concatenation, I guess.
>
> My numbers came out somewhat differently. Make sure you're running
> with the JVM's "server" mode if you run on Hotspot (Sun/OpenJDK):

Ah, I didn't specify the option:

                            user     system      total        real
  loop                  1.471000   0.000000   1.471000 (  1.248000)
  '' <<                 5.906000   0.000000   5.906000 (  5.906000)

JRuby is great :-)


> Here's numbers with a prototypical String.buffer implementation:
>
*snip*
>
> Of course, this 10-15% improvement could simply be because the JVM
> does not provide a "realloc" for its arrays (for various reasons, some
> of them presumably because it moves objects around in memory a lot).
> In order to grow a string, we have to allocate a new array and copy
> its contents. Under those circumstances, String.buffer makes a lot of
> sense, since the copying can get expensive at large sizes.


Ok, we finally grasped the situation.  To sum up:

- This feature is meaningless with MRI, at least, on Linux.
- But it serves as a workaround for slow string concatenation of JRuby
  that cannot be optimized due to JVM.
- Does MRI provide the feature just for script compatibility?

I cannot make the judgment.  Please wait for matz.

-- 
Yusuke ENDOH <mame@tsg.ne.jp>

In This Thread

Prev Next