Forum: Ruby Poor performance of Ruby 1.8.7 when installed with MacPorts

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
7b00965686932462eb7c765b65c580c4?d=identicon&s=25 Arcadio Rubio garcía (abc)
on 2008-11-01 12:00
(Received via mailing list)
Hi,

I've just upgraded to Ruby 1.8.7 using MacPorts (ruby @1.8.7-
p72_1+thread_hooks) and while it runs flawlessly, the performance is
really really poor.

I'm talking in comparison with the Ruby distro that ships with
Leopard, and with my previous installation of 1.8.6 also done with
MacPorts.

For instance a bunch of rspecs i have take 6x to get executed, and ri
takes noticeably more time than previously to load any doc.

Is anyone experiencing the same problem? Do you know how to fix it?

Thanks in advance.
8666d1ebabcea440585dfe831a4af9f1?d=identicon&s=25 Brian Adkins (Guest)
on 2008-11-01 17:50
(Received via mailing list)
abc <arcadiorubiogarcia@gmail.com> writes:

> For instance a bunch of rspecs i have take 6x to get executed, and ri
> takes noticeably more time than previously to load any doc.
>
> Is anyone experiencing the same problem? Do you know how to fix it?

http://hivelogic.com/articles/2008/02/ruby-rails-leopard
7b00965686932462eb7c765b65c580c4?d=identicon&s=25 Arcadio Rubio garcía (abc)
on 2008-11-02 12:36
(Received via mailing list)
Fine, thanks for the info.

Do you know what is the exact issue with MacPorts though?
F7596e1126f74e9f72f12f043e7d796a?d=identicon&s=25 nakatani katsumi (Guest)
on 2008-11-03 11:05
(Received via mailing list)
Hi

On Sat, 1 Nov 2008 19:58:54 +0900
abc <arcadiorubiogarcia@gmail.com> wrote:

> I've just upgraded to Ruby 1.8.7 using MacPorts (ruby @1.8.7-
> p72_1+thread_hooks) and while it runs flawlessly, the performance is
> really really poor.

> Is anyone experiencing the same problem? Do you know how to fix it?
The same problem reported at ruby-list-45593.(but Japanese only)

Summary is below.
1. On MacOS X(10.5.5), Ruby1.8.7(p72) compiled with --enable-pthread
excute slowly,
   as Ruby use time of 70% at rb_call()->getcontext() in fib.rb

2. In MacPorts, ./configure with --enable-pthread option makes config.h
using getcontext
like below
#define HAVE_GETCONTEXT 1
#define HAVE_SETCONTEXT 1

3. If you comment out these two lines, you will get normal speed
Ruby1.8.7.

4. As Ruby1.9 don't use getcontext()/setcontext(), Ruby1.9 don't care
--enable-pthread.
7b00965686932462eb7c765b65c580c4?d=identicon&s=25 Arcadio Rubio garcía (abc)
on 2008-11-04 14:25
(Received via mailing list)
Thanks for the explanation!
7b00965686932462eb7c765b65c580c4?d=identicon&s=25 Arcadio Rubio garcía (abc)
on 2008-11-06 19:35
(Received via mailing list)
I filed a bug report and they've just fixed it:

http://trac.macports.org/ticket/17092
8666d1ebabcea440585dfe831a4af9f1?d=identicon&s=25 Brian Adkins (Guest)
on 2008-11-07 05:23
(Received via mailing list)
abc <arcadiorubiogarcia@gmail.com> writes:

> I filed a bug report and they've just fixed it:
>
> http://trac.macports.org/ticket/17092

Wow, that was fast. Is the Ruby community great, or what? :) Thanks
for reporting back with the info.
0026dd77fd9ecc97b36e5b79cdbcf590?d=identicon&s=25 R. Kumar (sentinel)
on 2008-11-07 05:57
nakatani katsumi wrote:
> Hi
>
> On Sat, 1 Nov 2008 19:58:54 +0900
> abc <arcadiorubiogarcia@gmail.com> wrote:
>
>> I've just upgraded to Ruby 1.8.7 using MacPorts (ruby @1.8.7-
>> p72_1+thread_hooks) and while it runs flawlessly, the performance is
>> really really poor.

Could someone explain this to to me. I checked the macports page a few
days back and it said it disables/deletes -enable-pthreads due to some
bug. So does that not mean that it's not there. As pointed above, it
uses thread_hooks instead.

1. Is there any commandline option or other way of my ascertaining
whether my install uses pthreads or not.

Another newb question:

2. One of the prev posts suggests altering config.h and running
./configure. However, if one is using sudo port install how does one do
this? I do not have a "configure" in my ruby folder and my config.h
(/opt/local/var/macports/software/ruby/1.8.7-p22_3+darwin_9_powerpc+thread_hooks/opt/local/lib/ruby/1.8/powerpc-darwin9.4.0/config.h)
does not contain GETCONTEXT.

Thanks.
Bec38d63650c8912b6ba9b557fb953b9?d=identicon&s=25 Roger Pack (rogerdpack)
on 2008-11-07 22:36
> Could someone explain this to to me. I checked the macports page a few
> days back and it said it disables/deletes -enable-pthreads due to some
> bug. So does that not mean that it's not there. As pointed above, it
> uses thread_hooks instead.

apparently somebody said that the most recent macport of it now compiles
with pthreads disabled.

>
> 1. Is there any commandline option or other way of my ascertaining
> whether my install uses pthreads or not.

from [1]
Maybe try with "ldd" on the ruby binaries--can't remember what the mac
equivalent is but it exists.


> Another newb question:
>
> 2. One of the prev posts suggests altering config.h and running
> ./configure. However, if one is using sudo port install how does one do
> this? I do not have a "configure" in my ruby folder and my config.h
> 
(/opt/local/var/macports/software/ruby/1.8.7-p22_3+darwin_9_powerpc+thread_hooks/opt/local/lib/ruby/1.8/powerpc-darwin9.4.0/config.h)
> does not contain GETCONTEXT.

If you install it from source you should be able to get at it
right...not sure using macports.

GL.
-=R

[1]
http://groups.google.com/group/comp.lang.ruby/brow...
8a85c693f13ef7cb542ef94d2a403d4d?d=identicon&s=25 Luc Heinrich (Guest)
on 2008-11-08 09:56
(Received via mailing list)
On 7 nov. 08, at 22:36, Roger Pack wrote:

> If you install it from source you should be able to get at it
> right...not sure using macports.

Using MacPorts, you just have to perform the various steps of the
'install' task manually, like this:

% sudo port fetch ruby
% sudo port extract ruby
% sudo port configure ruby

Now go in the work directory and change what you need. You can see
where that directory is by typing:
% port file ruby

After that, you can continue normally:
% sudo port install ruby
0026dd77fd9ecc97b36e5b79cdbcf590?d=identicon&s=25 R. Kumar (sentinel)
on 2008-11-08 12:26
Luc Heinrich wrote:
> On 7 nov. 08, at 22:36, Roger Pack wrote:
>
>> If you install it from source you should be able to get at it
>> right...not sure using macports.
>
> Using MacPorts, you just have to perform the various steps of the
> 'install' task manually, like this:
>
Thanks a lot.

btw, will installing 1.9 from macports create a separate executable such
as ruby1.9 so we can run 8 and 9 in parallel. Or overwrite?


Is there any way via macports to have both running in parallel.
Thanks.
8a85c693f13ef7cb542ef94d2a403d4d?d=identicon&s=25 Luc Heinrich (Guest)
on 2008-11-08 15:44
(Received via mailing list)
On 8 nov. 08, at 12:24, Nit Khair wrote:

> btw, will installing 1.9 from macports create a separate executable
> such
> as ruby1.9 so we can run 8 and 9 in parallel. Or overwrite?

The ruby19 Portfile sets the --program-suffix argument of configure to
1.9, so yes you could install Ruby 1.8 and Ruby 1.9 at the same time
on the same machine.
Ea9c5fc694be4ff2e90a9d80a468c2b4?d=identicon&s=25 Jason Lai (Guest)
on 2008-11-25 06:01
(Received via mailing list)
Hi Nakatani-san,

That was really helpful information. I digged a bit more based upon
that thread, and for those who compile Ruby 1.8.7 from source on OS X,
here's a more handy way: add 'ac_cv_func_getcontext=no
ac_cv_func_setcontext=no' along with --enable-pthread, e.g.:
./configure --enable-pthread --enable-shared ac_cv_func_getcontext=no
ac_cv_func_setcontext=no

Then the following lines won't appear on your config.h:
#define HAVE_GETCONTEXT 1
#define HAVE_SETCONTEXT 1

Just my 2 cents,
Jason
F7596e1126f74e9f72f12f043e7d796a?d=identicon&s=25 nakatani katsumi (Guest)
on 2008-11-28 14:05
(Received via mailing list)
Hi Jason

On Tue, 25 Nov 2008 13:55:31 +0900
Jason Lai <jason@jasonlai.net> wrote:

> Hi Nakatani-san,
>
> That was really helpful information. I digged a bit more based upon
> that thread, and for those who compile Ruby 1.8.7 from source on OS X,
> here's a more handy way: add 'ac_cv_func_getcontext=no
> ac_cv_func_setcontext=no' along with --enable-pthread, e.g.:

Oh,I missed to follow this problem.
This bug was fixed with 1.8.7-p72_2 of MacPorts, that was reported at
ruby-list:45621(japanese only).
(ruby 1.8.7-p72_1 of MacPorts has bug)
You can use the most up-to-date ruby of  MacPorts without any extra
option.
Ea9c5fc694be4ff2e90a9d80a468c2b4?d=identicon&s=25 Jason Lai (Guest)
on 2008-12-02 19:50
(Received via mailing list)
Hi Nakatani-san,

Thanks for the heads-up. But the issue is still there for those
compiling Ruby 1.8.7-p72 from source right? If so, my little tip may
be of some help.

Cheers,
Jason
This topic is locked and can not be replied to.