Ah, got you! That's a good idea, will give it a go, thanks.

On Friday, July 3, 2015 at 5:12:45 PM UTC+1, Colin Yates wrote:
> Hi Russel, I often find my intuition as to where the problem is when it comes 
> to performance is about as bad as my estimates (i.e. terrible) so I 
> ruthlessly reduce the problem. In this case, is the performance problem in JS 
> or simple rendering the DOM. One way to do that is use your app to render 
> page 1 and inspect the HTML. Copy that HTML into a file called ‘page1.htm. 
> Now use your app to transition to another page which is considered ‘slow’ and 
> inspect the HTML. Copy that to a file called page2.htm. Now edit page1.htm 
> and add a link to page2.htm. You now have a reduced problem set where there 
> is absolutely no JS and is pure rendering.
> 
> Now, load page1.htm in the browser - how quick was that? Now click the 
> transition button and wait for it to be rendered - how quick was that? It is 
> sometimes surprising how long this takes, even without the overhead of 
> JavaScript. At least now I am guided to whether the slog is in rendering the 
> DOM (in which case chunking the DOM updates is one answer) or somewhere else.
> 
> That’s all I meant.
> 
> > On 3 Jul 2015, at 17:06, Russell Dunphy <russ...@russelldunphy.com> wrote:
> > 
> > Thanks Colin! The only one I'm not sure I follow is to "copy the rendered 
> > HTML from page1 and page2 into static HTML files". Is this for the special 
> > case where you don't have any dynamic content on the page? Or are you 
> > talking about rendering the generic structure of the page first, then 
> > loading in actual data?
> > 
> > On Friday, July 3, 2015 at 4:13:36 PM UTC+1, Colin Yates wrote:
> >> I notice (subjectively) that Chrome is generally a *lot* faster when 
> >> running JS heavy apps than Firefox or, please no - IE<11.
> >> 
> >> 
> >> A few tips, I am sure you are already doing:
> >>  - only render what is needed, don’t use ‘hidden’ as they are still in the 
> >> DOM
> >>  - copy the rendered HTML from page1 and page2 into static HTML files and 
> >> then add an "<a href” to transition between them - that removes all JS and 
> >> leaves you with the faster you are going to get
> >>  - read and digest 
> >> https://github.com/Day8/re-frame/wiki/Solve-the-CPU-hog-problem
> >>  - identify the ‘real' performance bottlenecks; sure it may displease you, 
> >> but will the users really care? What else could you be giving them if you 
> >> didn’t have to work on this? This is a note to me more than you :).
> >> 
> >> 
> >> HTH and if you find any other tips then shout loudly!
> >> 
> >> 
> >> 
> >> On 3 Jul 2015, at 15:42, Russell Dunphy <rus...@russelldunphy.com> wrote:
> >> 
> >> Does anyone have any tips for performance tuning a reagent/re-frame 
> >> application they can share? We're running into very slow rendering 
> >> performance when changing pages on Firefox on Windows  (ie sometimes 
> >> several seconds) which, though still noticeably laggy, don't seem to be 
> >> anywhere near as much of a problem in Chrome.
> >> 
> >> Unfortunately I can't share the codebase, but here's what we've been 
> >> trying so far:
> >> 
> >> Using React.addons.Perf to identify components that take more data than 
> >> they need as arguments - i.e their render function is called with changed 
> >> data but they don't end up generating different markup. This has helped us 
> >> reduce *re-render* performance, but doesn't help us much on initial page 
> >> render, where is where our performance problems mainly lie.
> >> 
> >> Wrapping all our subscriptions using our own [custom register sub 
> >> function](https://gist.github.com/rsslldnphy/5c937167380dd3442076) to 
> >> track how many times each subscription is called, how long it takes etc, 
> >> to reduce duplicated work and highlight inefficiences. This has helped us 
> >> a bit, but slowness still remains.
> >> 
> >> To give a slightly better UX when moving between pages, we first update 
> >> the app state with a key that causes a loading spinner to appear, then 
> >> call reagent/flush to make sure it's rendered, *then* update the app state 
> >> again to trigger the change to the new page. This still ends up being a 
> >> bit jerky however (the gif often freezes while the page is rendering, or 
> >> itself takes a while to appear) so any better suggestions would be very 
> >> welcome.
> >> 
> >> Thanks in advance for your suggestions.
> >> 
> >> Russell
> >> 
> >> -- 
> >> Note that posts from new members are moderated - please be patient with 
> >> your first post.
> >> --- 
> >> You received this message because you are subscribed to the Google Groups 
> >> "ClojureScript" group.
> >> To unsubscribe from this group and stop receiving emails from it, send an 
> >> email to clojurescrip...@googlegroups.com.
> >> To post to this group, send email to clojur...@googlegroups.com.
> >> Visit this group at http://groups.google.com/group/clojurescript.
> > 
> > -- 
> > Note that posts from new members are moderated - please be patient with 
> > your first post.
> > --- 
> > You received this message because you are subscribed to the Google Groups 
> > "ClojureScript" group.
> > To unsubscribe from this group and stop receiving emails from it, send an 
> > email to clojurescript+unsubscr...@googlegroups.com.
> > To post to this group, send email to clojurescript@googlegroups.com.
> > Visit this group at http://groups.google.com/group/clojurescript.

-- 
Note that posts from new members are moderated - please be patient with your 
first post.
--- 
You received this message because you are subscribed to the Google Groups 
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojurescript+unsubscr...@googlegroups.com.
To post to this group, send email to clojurescript@googlegroups.com.
Visit this group at http://groups.google.com/group/clojurescript.

Reply via email to