4

Back in 1998 I had a computer with 233MHz Pentium MMX CPU and a GFX card with no 3D acceleration. It was able to run games like Quake II at a decent FPS rate. My current computer has tons more performance and a mid-class GPU, yet struggles to reach 20 FPS when rendering a single model inside a skybox with WebGL. Even regular pages with lots of 2D CSS animations bring many modern computers to their metaphorical knees.

As a web developer I understand there's a lot going on in a web page but not what makes it that heavy. Modern browsers compile JavaScript to CPU native machine code before running it and rendering into a canvas element shouldn't trigger DOM rebuilds so theoretically it should be a lot faster than it is.

What am I missing here and is it possible to avoid or minimize whatever is making the browsers slow to build more efficient websites?

3 Answers 3

0

Webpages are much larger today than they were two decades ago, and they also use more CPU-intensive components, like Flash.

Webpage from two decades ago would be about 7KB, todays are clocking in around 200-300K? And back then, you can very minimal JavaScript, with very few images, and if they were images, you were looking at GIFs or small JPEGs. And Flash could lockup a machine with its terrible performance. Now you have websites with several Flash items on them, with 1920x1080 or larger JPEGs on them.

Browsers are about as efficient as they are going to get.

0

It's a bit unfair to compare a full 3D, CSS, AJAX and JavaScript laden modern webpage with an old webpage where the most complicated it got was swapping images around on buttons or in the page every few seconds.

What you are asking the browser to do is more complicated by several orders of magnitude, 3D calculations modelling in order to pass it to the graphics card alone requires much more processing power than the simple "put image here" webpages of yesteryear.

The models in Quake were not complicated, managing of the order of tens of polygons per model rather than modern games that expect tens of thousands of polygons per model.

Even then I would not expect to see a massive degredation in performance in the browser and I would be looking at your model itself. The more polygons in the model, the longer it will take to calculate and pass to the graphics card.

Try looking to see if you can reduce the complexity (number of polygons) in your model as a first case, 3D has always been much more about getting the right level of complexity in the models so that they look good, but don't affect performance too badly.

This site from Chrome Experiments is an example of good in-browser 3D, looks pretty smooth to me (in Firefox) and it is the level of detail I would expect to run well. If you have problems with that site being painfully slow then I would be curious as to whether your browser is actually using the graphics card to render 3D.

1
  • 1
    Yes, old webpages were a lot simpler than they are today, but I'm not comparing modern sites to them - at least not intentionally. My point was that the site you linked to could well have run just as smooth, if not smoother, on a Pentium as a native application even without 3D acceleration. Oct 13, 2012 at 9:51
0

A lot of pages feel slow because they request ads from different places. Other pages feel slow because the javascript is poorly written. Other factors have been described by Mokubai and user*. The common "denominator", though is javascript. It's basically responsible for making your browser slow. Some people will say it's flash primarily, but I'd have to disagree. Well written flash pages are lean and mean. 3D animations, interactive games, whatever... The main problem is people who don't know how to program efficiently. And it's not always easy!

Anyway. If you run Firefox, get NoScript. It will block all javascript (and flash), while allowing you to enable "rich" elements on a one-by-one basis or page-by-page. If you're not a fan of firefox, then google chrome is your next best bet, as it's really really fast.

Not the answer you're looking for? Browse other questions tagged .