[#4341] DRY and embedded docs. — Hugh Sasse Staff Elec Eng <hgs@...>
If I have a here document in some ruby program:
[#4347] Re: DATA and rewind. — ts <decoux@...>
>>>>> "H" == Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
[#4350] Re: Thirty-seven Reasons [Hal Fulton] Love[s] Ruby — "David Douthitt" <DDouthitt@...>
[#4396] Re: New Require (was: RAA development ideas (was: RE: Looking for inp ut on a 'links' page)) — Hugh Sasse Staff Elec Eng <hgs@...>
On 9 Aug 2000, Dave Thomas wrote:
[#4411] Re: RAA development ideas (was: RE: Lookin g for inp ut on a 'links' page) — Aleksi Niemel<aleksi.niemela@...>
Me:
On Thu, 10 Aug 2000, [iso-8859-1] Aleksi Niemelwrote:
[#4465] More RubyUnit questions. — Hugh Sasse Staff Elec Eng <hgs@...>
I am beginning to get a feel for this, but I still have a few more
[#4478] Re: RubyUnit. Warnings to be expected? — ts <decoux@...>
>>>>> "H" == Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
[#4481] Invoking an extension after compilation — Dave Thomas <Dave@...>
Hi,
[#4501] What's the biggest Ruby development? — Dave Thomas <Dave@...>
[#4502] methods w/ ! giving nil — Hugh Sasse Staff Elec Eng <hgs@...>
I have got used to the idea that methods that end in '!' return nil if
[#4503] RubyUnit and encapsulation. — Hugh Sasse Staff Elec Eng <hgs@...>
My_class's instance variables are not all "attr :<name>" type variables,
[#4537] Process.wait bug + fix — Brian Fundakowski Feldman <green@...>
If your system uses the rb_waitpid() codepath of rb_f_wait(),
[#4567] Re: What's the biggest Ruby development? — Aleksi Niemel<aleksi.niemela@...>
Dave said:
Robert Feldt <feldt@ce.chalmers.se> writes:
On Sat, 26 Aug 2000, Dave Thomas wrote:
Robert Feldt <feldt@ce.chalmers.se> writes:
On Mon, 28 Aug 2000, Dave Thomas wrote:
Robert Feldt <feldt@ce.chalmers.se> writes:
[#4591] Can't get Tcl/Tk working — Stephen White <steve@...>
I can't get any of the samples in the ext/tk/sample directory working. All
I'm sure looking forwards to buying the book. :)
Stephen White <steve@deaf.org> writes:
On Sun, 27 Aug 2000, Dave Thomas wrote:
Stephen White <steve@deaf.org> writes:
[#4608] Class methods — Mark Slagell <ms@...>
Reading the thread about regexp matches made me wonder about this:
[#4611] mod_ruby 0.1.19 — shreeve@...2s.org (Steve Shreeve)
Shugo (and others),
[#4633] Printing tables — DaVinci <bombadil@...>
Hi.
[#4647] Function argument lists in parentheses? — Toby Hutton <thutton@...>
Hello,
[#4652] Andy and Dave's European Tour 2000 — Dave Thomas <Dave@...>
Hi,
[#4672] calling super from c — Robert Feldt <feldt@...>
[#4699] Double parenthesis — Klaus Spreckelsen <ks@...1.ruhr-uni-bochum.de>
Why is the first line ok, but the second line is not?
[ruby-talk:04431] Re: Real world performance problems
> A> I don't know any real solution to this right now. GC is
> slow, so let's not
> A> do it, OTOH without GCing now and then we run out of memory *fast*.
Dave and Guy proposed the same thing with different words almost
simultaneously, so I guess we should assume they're just clones of each
other and got a communication problem who's doing what ;->. Thanks guys!
> Have you tried something like this :
>
> GC.disable
> 24001.times do |i|
> #
> if i%1000 == 0
> GC.enable
> GC.start
> GC.disable
> end
> end
Actually I didn't try the simplest thing!
I tried
module Kernel
def timely_gc(seconds)
# stop gc
GC.disable
# make thread which sleeps and does the janitor job, and repeats
@timely_gc = Thread.start do
loop do
sleep seconds
GC.start
GC.disable
end
end
end
end
but I didn't get satisfactory results. (I guess I was generating core dump.)
Well, while the simplest thing seems to almost solve the problem (8000
items, runtime 10.8206 :-D ), there are problems with this solution
First, 'ps' tells during the runtime:
30044 99.9 13.7 72356 71328 pts/27 R 18:37 0:02 ruby hash_test.rb
30044 99.9 29.4 153484 152460 pts/27 R 18:37 0:07 ruby hash_test.rb
30044 99.9 39.4 205852 204044 pts/27 R 18:37 0:12 ruby hash_test.rb
30044 99.9 53.2 276552 275528 pts/27 R 18:37 0:18 ruby hash_test.rb
30044 99.9 63.5 330488 328680 pts/27 R 18:37 0:24 ruby hash_test.rb
30044 99.9 72.3 375008 373984 pts/27 R 18:37 0:29 ruby hash_test.rb
This is before I have to kill it, as very soon it'll dump the core as it
fails to allocate more memory. Well, you can see, the memory usage is
growing fast (I wonder why, is there a bug in GC?).
So I couldn't get running time for 24000 entries. This might be partly due
my hack to increase HEAPS constants in gc.c.
Even provided all the memory this part of program might use in current form,
this is quite hard way to go. I'm multi-threading, and the information
source could be blocked for long times, we might end up in the situation
where some other thread makes tons of objects, expecting normal GC. So when
we'd finally have processed 1000 entries the core has been dumped a long
ago.
Of course all parts could be coded with do-the-gc-by-yourself -methodology
but I doubt it's the right way to go. For example, you can't use any
standard libraries before first making sure they GC too when they think they
have to.
Therefore I did go with the timely_gc solution, but even so you have to put
the sleep quite small, and you can never know when the thread gets execution
turn. So I guess that way is not good either as we can't make sure we will
GC when needed, but not too often.
The problem remains... I guess we're expecting Matz says something
definitive here :).
- Aleksi