[#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:28501] Re: [Feature #905] Add String.new(fixnum) to preallocate large buffer

From: Yusuke ENDOH <mame@...>
Date: 2010-03-05 08:58:35 UTC
List: ruby-core #28501
Hi,

2010/3/5 Kornelius Kalnbach <murphy@rubychan.de>:
>> Preallocation of String would be immensely useful in large ERB
>> templates.
> How big would the buffer size have to be for this template?
>
>  <p><%= link_to @record.name, @record %></p>

Yes, it is generally difficult to determine the size.

We may be able to estimate it by using domain knowledge in some cases.
(e.g., certain page size is empirically known as about 10KB, etc.)
But if the expectation is disappointed, it will cause wasteful memory
allocation or no speed up.


>> So much so, I was looking to patching into rb_str_resize(str, len)
>> with a method, to get around related performance issues.  Ruby
>> Strings already support the difference between the string length and
>> the allocated buffer size -- we need to expose it and ensure that
>> Strings do not automatically "shrink" the internal String buffers.
>> There should probably be a method to explicitly shrink the internal
>> buffer, if needed.
> This sounds like C to me.

Agreed.  It is too easy to waste memory.


> But I don't say it can't be further optimized in the real world.

Agreed.  So, we need a benchmark to discuss this.


>> For large buffers making this O(1)
>> for large strings helps performance and reduces malloc() memory
>> fragmentation.
> Ropes have been mentioned, they provide constant time concatenation, but
> have slower iteration and indexing. They also use more memory.
>
> Is Array#join optimized for the case where all entries are strings?

I think Array#join already does so.


Thank you very much for saying almost all I want to say :-)

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

In This Thread