
Coding Horror: Performance is a Feature - swah
http://www.codinghorror.com/blog/2011/06/performance-is-a-feature.html
======
nhebb
OK, Negative Nellie here:

Do all the popups on Stack Overflow factor into the performance measurements?
My last three visits I had a "welcome back ... blah blah blah" popup as well
as the orange "you've got a badge or something" popup. I love Stack Overflow,
but the popups are distracting. I have a must-close-popups-OCD disorder, so if
I measure performance as the time it takes from clicking my bookmark to being
able to use the site, it's been in the 5-digit millisecond range.

~~~
r00fus
They're annoying because similar to modal windows, they elicit action ((
Welcome Back user! click to reload window->[x])) and it seems they require me
to reload my page every time I return due to the use of OpenID (ppl ask why
it's cumbersome? here's why... and stackoverflow has the best OpenID
implementation I've used)

~~~
pja
Personally, I wouldn't mind if it weren't for the fact that popups seem to
mess up the browser positioning on url fragment ids. The popups seem to
guarantee to pop up over the top line of the fragment that was in the link
you've just followed, so you're forced to either close the popup or scroll the
web page to read the content that you came to read.

Needless to say, this doesn't enhance the user experience.

------
benologist
The entire #3 really hits home for me. A couple weeks ago I started using New
Relic and was just horrified by how bad my code had degenerated over the last
2 years... all those changes you make _do_ have a cost, and in hindsight "it's
fast for me" does not necessarily extend to others.

I've always looked at scaling Playtomic to involve the crapton [1] of data
we're processing every minute of every day - cause that's obviously where the
"real work" is, handling a huge stream of data that needs processing. It
turned out the web interface for heavier users was ridiculous [2], heavier
users with dozens of games had in extreme cases double-digit _seconds_ on some
of the stuff which is just embarrassing.

In the last couple weeks I've reduced our main server (we're still ghetto so
it's database + web) cpu usage from 80% down to ~20% and made staggering
improvements on the speed of reports - down to xx milliseconds in most cases,
from some really ugly times [3].

[1] <http://playtomic.com/blog/post/64-whats-in-a-minute>

[2] [http://playtomic.com/blog/post/62-scaling-the-user-side-
of-p...](http://playtomic.com/blog/post/62-scaling-the-user-side-of-pla)

[3] <http://i.imgur.com/bdUG4.png>

~~~
ojilles
Tangent: How does the data transfer from your server to new relic work?
There's very little data on their website that I could find...

~~~
benologist
I'm not sure about the method, but it sends the data to collector.newrelic.com
and collector0 through 8., pretty much the whole thing was completely
automatic and zero configuration except for double clicking the installer exe.

Edit, actually here we go (about 1/2 way down):

<http://support.newrelic.com/help/kb/docs/security>

By default, data is transmitted in the clear from your site to our site. There
is an option flag (ssl) in the newrelic.yml file to enable the use of HTTPS.
We don't do host authentication with HTTPS, just communication encryption.

Under Java, .NET and PHP we use JSON to serialize data. The Ruby agent uses
Ruby marshaling to send data to New Relic and we marshal return codes back. We
believe the risk exposure from marshaling is low.

The Agent communicates with two hosts: collector.newrelic.com and one of
collector[0-8].newrelic.com, where the numbered host is fixed for your
account. Which numbered host your account uses is displayed in the
log/newrelic_agent.log at startup.

~~~
ojilles
Sounds great! But still, I'd love some more information before installing this
on production. Thanks anyways for the pointer, hadn't come across them before!

Edit: Thanks for that too! :-)

~~~
benologist
Chat with their live support - it really is an incredible platform.

------
ck2
I have a hard time believing 100ms is a serious issue unless the page is
already over 1 second to be in a "ready" state.

I think the rarely discussed "time to first render" (for lack of a better word
in my head - NOT domcontentloaded) is critical and part of that is the penalty
for DNS cache miss which can already be up to 400ms in some cases.

Basically when people click, they want the browser to "do something already".

If you want easy ways to make your page to feel faster then stop loading
javascript by default and do it after the page is loaded and don't load images
below the fold by default - do all that in the background afterward.

All the CDN in the world won't help you if you have 10+ external javascripts,
multiple stylesheets, and dozens of images loading on the page.

~~~
mzl
While it is hard to believe that 100ms will actually matter, it is precisely
what both Amazon and Google found out when they studied latency sensitivity in
users. Research is not only about confirming what we already believe,
sometimes one actually gets surprising results :) Read the studies linked from
the article for more details.

------
rhdoenges
There's nothing that speeds up a website like well-spent unicorn dollars.

