refinery / refinerycms

An extendable Ruby on Rails CMS that supports Rails 6.0+
https://www.refinerycms.com/
MIT License
3.9k stars 1.26k forks source link

Fibers seem slow in development #634

Closed stefl closed 13 years ago

stefl commented 13 years ago

I was having very slow load times in development. Six menu items are causing most of the view render time.

Rendered /Library/Ruby/Gems/1.8/gems/refinerycms-core-0.9.9.19/app/views/shared/_menu_branch.html.erb (8.3ms) Rendered /Library/Ruby/Gems/1.8/gems/refinerycms-core-0.9.9.19/app/views/shared/_menu_branch.html.erb (11.9ms) Rendered /Library/Ruby/Gems/1.8/gems/refinerycms-core-0.9.9.19/app/views/shared/_menu_branch.html.erb (11.0ms) Rendered /Library/Ruby/Gems/1.8/gems/refinerycms-core-0.9.9.19/app/views/shared/_menu_branch.html.erb (140.3ms) Rendered /Library/Ruby/Gems/1.8/gems/refinerycms-core-0.9.9.19/app/views/shared/_menu_branch.html.erb (8.4ms) Rendered /Library/Ruby/Gems/1.8/gems/refinerycms-core-0.9.9.19/app/views/shared/_menu.html.erb (498.7ms) Rendered themes/wedding/views/shared/_header.html.haml (519.8ms) Rendered themes/wedding/views/shared/_footer.html.haml (0.8ms) Rendered /Library/Ruby/Gems/1.8/gems/refinerycms-core-0.9.9.19/app/views/shared/_javascripts.html.erb (0.6ms) Rendered themes/wedding/views/pages/show.html.haml within layouts/application (1494.0ms) Completed 200 OK in 1715ms (Views: 1482.8ms | ActiveRecord: 39.1ms)

If I remove all of the Fibers calls from the header partial and replace with this (I'm in HAML):

= render(:partial => "/shared/menu", :locals => {:dom_id => 'menu', :css => 'menu', :roots => @menu_pages.where(:parent_id => nil), :collection => @menu_pages.where(@menu_pages.arel_table[:parent_id].not_eq(nil)), :selected_item => (@page if defined?(::Page)) })

I get:

Rendered /Library/Ruby/Gems/1.8/gems/refinerycms-core-0.9.9.19/app/views/shared/_menu_branch.html.erb (7.6ms) Rendered /Library/Ruby/Gems/1.8/gems/refinerycms-core-0.9.9.19/app/views/shared/_menu_branch.html.erb (10.6ms) Rendered /Library/Ruby/Gems/1.8/gems/refinerycms-core-0.9.9.19/app/views/shared/_menu_branch.html.erb (11.9ms) Rendered /Library/Ruby/Gems/1.8/gems/refinerycms-core-0.9.9.19/app/views/shared/_menu_branch.html.erb (7.1ms) Rendered /Library/Ruby/Gems/1.8/gems/refinerycms-core-0.9.9.19/app/views/shared/_menu_branch.html.erb (8.7ms) Rendered /Library/Ruby/Gems/1.8/gems/refinerycms-core-0.9.9.19/app/views/shared/_menu.html.erb (335.5ms) Rendered themes/wedding/views/shared/_header.html.haml (356.7ms) Rendered themes/wedding/views/shared/_footer.html.haml (0.8ms) Rendered /Library/Ruby/Gems/1.8/gems/refinerycms-core-0.9.9.19/app/views/shared/_javascripts.html.erb (0.8ms) Rendered themes/wedding/views/pages/show.html.haml within layouts/application (798.3ms) Completed 200 OK in 1033ms (Views: 806.5ms | ActiveRecord: 40.8ms)

Which knocks 600ms off the load time.

Why does this partial use Fibers?

parndt commented 13 years ago

This partial is slow altogether. Fibers actually improved times for me! But, seeing as how they're so contentious and provide little gain for the possible headaches we should go ahead and remove them.

parndt commented 13 years ago

This will take me a day or two, but if you wanted could you patch it to make that quicker? You may also want to remove this little kludge for 1.8.7 : https://github.com/resolve/refinerycms/blob/master/base/lib/refinerycms-base.rb#L43

I just realised you're running 1.8.7 so this is a good thing to remove the Fibers if it's actually making it slower for you to have to go through the kludge's overhead!!