I note that process memory size is being listed in other posts and I didn't
put that in my last post.

The SmallScript (QKS Smalltalk) run had a maximum memory utilization of
24MB.

--
-- Dave S. [ http://www.smallscript.net ]

"David Simmons" <pulsar / qks.com> wrote in message
news:h9G17.159960$%i7.106597944 / news1.rdc1.sfba.home.com...
> Since I've had a few private e-mails sent to me on this I thought I would
> just post some extra information.
> ----
> In case it was not clear, the timing numbers I gave for were for a
complete
> run of the script which included
> (startup+compilation+execution+shutdown+exit) of the VM.
>
> The run did not use a "hint" to suggest what the size was.
>
> The entire Hash (aka <Dictionary>) class is written in SmallScript (there
> are no VM/C++ primitives).
>
> The timing for just executing the snippet only (not counting
> startup/compilation/shutdown) where a hint is provided is:
>
> "Run using standard #to:do: message (which gets inlined)"
>
>     0.570s to run snippet with hint
>
>     stdout cr <<
>     [
>         |data. a := Dictionary(1000001).|
>         0 to: 1000000 do: [:i| a[i] := 'joe'].
>         0 to: 1000000 do: [:i| data := a[i]].
>     ] millisecondsToRun.
>
>
> "OR -- using alternate syntax with an <Interval> (not inlined)"
>
>     0.656s to run snippet with hint
>
>     stdout cr <<
>     [
>         |data. a := Dictionary(1000001).|
>         for (each i in 0 to: 1000000)
>             a[i] := 'joe'].
>         for (each i in 0 to: 1000000)
>             data := a[i].
>     ] millisecondsToRun.
>
> The cpu is a 1.2GHz AMD TBird.
>
> --
> -- Dave S. [ http://www.smallscript.net ]
>
> "David Simmons" <pulsar / qks.com> wrote in message
> news:wTD17.159652$%i7.106431402 / news1.rdc1.sfba.home.com...
> > "Joseph McDonald" <joe / vpop.net> wrote in message
> > news:eTp17.43890$AM.956429 / e420r-sjo3.usenetserver.com...
> > >
> > > Hi,
> > >
> > > Just wondering if there is a trick to speed up the following:
> > >
> > > % cat junk.rb
> > > a = Hash.new
> > > for i in 0..1000000
> > >   a[i] = "joe"
> > > end
> > >
> > > for i in 0..1000000
> > >   data = a[i]
> > > end
> > >
> > > /usr/bin/time ./junk.rb
> > > 34.55user 0.19system 0:34.73elapsed 100%CPU (0avgtext+0avgdata
> > 0maxresident)k
> > > 0inputs+0outputs (232major+11360minor)pagefaults 0swaps
> > >
> > >
> > > If I do a GC.disable it gets much better:
> > >
> > > /usr/bin/time ./junk.rb
> > > 5.02user 0.13system 0:05.14elapsed 100%CPU (0avgtext+0avgdata
> > 0maxresident)k
> > > 0inputs+0outputs (228major+12371minor)pagefaults 0swaps
> > >
> > > I have tried the above with both 1.6.4 and 1.7.1 with generational
> > > GC patch, results are about the same.
> > >
> > > Should we just make sure that we turn off GC when doing something like
> > > above?
> > >
> > > python is about 4 seconds for the same thing and perl is 5.1 seconds.
> >
> > Hmm. I'm not familiar with Ruby's Hash class implementation.
> >
> > However, in a language like Smalltalk one can provide a "hint" as to the
> > number of elements the hash (aka <Dictionary>) object will contain. This
> > allows it to pre-allocate enough space, so it does not have to keep
> getting
> > grown and rehashed. Second, growth is typically performed in powers of
two
> > rounded up to the nearest prime number (to improve the likelyhood of a
> good
> > hashing distribution).
> >
> > A given hashed collection object (or a subclass) may be customized to
> change
> > the default resize (add/remove) growth/shrink policy characteristics or
> > algorithm.
> >
> > For comparison, when I ran the above snippet in SmallScript (QKS
> Smalltalk),
> > it took:
> >
> >      0.556 seconds to build the hash.
> >
> >      0.869 seconds to both build the hash and then query it (which is
> >                    what the provided snippet appears to do).
> >
> > SmallScript GC is fully enabled.
> >
> > I don't know what machine the original poster was using for the Ruby run
..
> >
> > My machine used for this run is a 1.2GHz AMD TBird. Assuming that the
> > original poster was running on a 500MHz machine then a comparable
> > SmallScript run would take about 2-seconds.
> >
> > --
> > -- Dave S. [ http://www.smallscript.net ]
> >
> > >
> > > thanks,
> > > -joe
> > >
> > >
> >
> >
> >
> >
> >
> >
>
>