Perceived performance


(Kris) #1

I hate to constantly reference NodeBB when talking about Discourse improvements because I don’t think their product is particularly better overall — but a lot of the feedback I’ve seen can be boiled down to the idea that NodeBB is really fast.

The comparison leads me to wonder if NodeBB is really only appearing to be faster (I’m not even sure if it’s actually faster).

There’s definitely room for subjectivity, but I think some thoughts around the perception of speed from Steve Sounders can be relevant here.

The way topics and topic lists are loaded for example… Discourse isn’t loading an entire new page like a traditional website may, but it does often feel like it is. You click a topic link, and you immediately get a flash of a white page and a loading indicator, which then flashes over to the content once it’s loaded. Logically this is the fastest way to do things.

NodeBB on the other hand pads out their loading through a few fade effects (content fades out and new stuff fades in). I think they’re over-animating it… but you’re definitely looking at a blank screen or loading indicator less (or not at all), and it feels like you’re not waiting as long… you’re not being sent to a waiting room to watch a clock.

From a purely front-end perspective I think reducing the visual importance of the current loading indicator (the black box with the spinner) can help ease minds a little, but I was also curious to see if anyone else had related thoughts…

Could it feel better to overlay a loading indicator on the current page rather than a blank white page?

(Régis Hanol) #2

I’m pretty sure it would.

Here’s a great talk from Guillermo Rauch about the need for speed:

(Dave McClure) #3

I think it could help a bit. But I just played around again with NodeBB, and noticed a couple things.

In addition to the fade, they use this trick with the progress bar. Regardless of how fast the page loads, that bar goes from 0% to 80% really fast. That gives an initial impression that things are really moving.

If the page loads fast, it get to 100% pretty quickly too.

But - often the page doesn’t load that fast. And I’m not sure the overall perception at that point is much better than what you see here. Maybe it is… but its hard to convince yourself one way or another just by playing with it.

I think the biggest win will eventually come from actually making things load faster…

(Kris) #4

Right, I don’t think that will ever change… I just want to be sure that we’re not doing a disservice to the speed gains in the backend by poorly presenting them in the frontend.

(Robin Ward) #5

There is a really good chance that Discourse client performance will increase quite a bit in the next few months. Nothing is for sure, but HTMLBars is going into alpha soon, and once that’s integrated into Ember we should see some nice improvements across the board.

(Dave McClure) #6

ok, some real feedback on your actual question then :smile:

  1. topic list loading
    when going from a topic back to the topic list by clicking the logo:
    for me, there is often no feedback (no loading spinner). just waiting until the page loads.

  2. notification icon popup
    i also often find myself clicking the notification icon repeatedly before the popup shows up. i think there was a recent PR to address part of that, but it still seems to be problematic at times.

  3. spinner vs. progress bar thingy
    i think nodeBB’s progress bar thingy does a better job of making it feel like something is happening than the spinner.

(Jeff Atwood) #7

Yes, the root issue is that Ember and handlebars templates are not as efficient as they could be. @eviltrout is right, we need to push forward with HTMLbars as soon as we can.

The good news is that @eviltrout will be at the EmberConf next week and I told him to nag the crap out of everyone there about this. There is no other way to fix our atrocious Android perf.

(Anthony) #8

Discourse needs to improve real performance but perceived performance also needs to be addressed. People are going to be on bad connections and much slower devices. Discourse needs to degrade gracefully into something that still feels fast and then even when its slow feels like it is working. On phones, when loading takes a while I am always think about if I need to re tap something.

Comparing NodeBB to discourse on a iPhone 5 is night and day. Real performance is very close but it feels much faster because of the improved animations.

“Hamburger" menu popup feels like it didn’t work on discourse and animates down on nodebb. Same for going back to topics from the thread. Clicking scroll to the bottom on phone feels completely broken.

(Jeff Atwood) #9

Animations are purely a matter of taste, see iOS 7. Irrelevant.

Real performance is what matters and that is what HTMLbars is about.

(Anthony) #10

iOS 7’s issue was animations that took much longer than the actual action. The initial app launching animation was critical for iOS 1, so that you were able to instantly see that your tap was successful. iOS 7 was slower compared to this earlier animation.

If something is going to take several seconds, an animation will make it feel faster and like it is working. This part is not taste. Unless you planning on making every action instant on phones while on a mobile connection, perceived performance and showing that something is happening is critical.

(Jeff Atwood) #11

We just replaced the black box (and text) with a simple and larger spinner. See if that helps!

And @apere006 we also added the spinner to the notifications drop-down, as I recall.

(Jeff Atwood) #13

Now that topic perf is 5x faster in 1.5 and the topic list perf was improved so much in 1.2 I think this can be closed.

(Jeff Atwood) #14