Slashdot Mirror


Can "Page's Law" Be Broken?

theodp writes "Speaking at the Google I/O Developer Conference, Sergey Brin described Google's efforts to defeat "Page's Law," the tendency of software to get twice as slow every 18 months. 'Fortunately, the hardware folks offset that,' Brin joked. 'We would like to break Page's Law and have our software become increasingly fast on the same hardware.' Page, of course, refers to Google co-founder Larry Page, last seen delivering a nice from-the-heart commencement address at Michigan that's worth a watch (or read)."

68 of 255 comments (clear)

  1. Of Course by eldavojohn · · Score: 5, Insightful

    Can "Page's Law" Be Broken?

    I think it gets broken all the time. At least in my world. Look at Firefox 3 vs 2. Seems to be a marked improvement in speed to me.

    And as far as web application containers go, most of them seem to get faster and better at serving up pages. No, they may not be "twice as fast on twice as fast hardware" but I don't think they are twice as slow every three months.

    I'm certain it happens all the time, you just don't notice that ancient products like VI, Emacs, Lisp interpreters, etc stay pretty damn nimble as hardware takes off into the next century. People just can't notice an increase in speed when you're waiting on I/O like the user.

    --
    My work here is dung.
    1. Re:Of Course by falcon5768 · · Score: 3, Informative

      agreed. Apple always manages to break it too with OS X. from 10.1 to 10.4 the OS notably improved in speed on even older equipment each time it upgraded, even on older PPC G3 and G4 machines.

      --

      "Slashdot, where telling the truth is overrated but lying is insightful."

    2. Re:Of Course by Z00L00K · · Score: 4, Insightful

      The law isn't linear, it's more sawtooth-style.

      Features are added all the time which bogs down the software, and then there is an effort to speed it up and then there are features added again.

      One catch in performance is that it sure is faster to use RAM for data, but there is also a lot of useless data floating around in RAM, which is a waste of resources.

      And this is often the curse of object-oriented programming. Objects carries more data than necessary for many of the uses of the object. Only a few cases exists where all the object data is used. A lot of object-oriented programming is somewhat like using 18-wheelers for grocery shopping.

      This often explains why old languages like C, Cobol etc. are able to do the same thing as a program written in C++, Java or C# at the fraction of the resource cost and at much greater speed. The disadvantage is that the old languages require more skills from the programmer to avoid the classical problems of deadlocks and race conditions as well as having to implement functionality for linked lists etc.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    3. Re:Of Course by Carewolf · · Score: 3, Interesting

      Exactly firefox 3 vs 2 is an excelent example. Especially because Firefox between major releases have been know for the opposite: Getting slower with each minor release.

      There are also examples of the opposite. The KDE 3.x got faster and faster for the entire generation, while KDE 4.0 was much slower again, but here 4.1, 4.2 and especially the next 4.3 is many times fast than the 4.0 release.

      So I don't think Google's ideas are unique. The issue is well known and fought against in many different ways in especially open source.

    4. Re:Of Course by NewbieProgrammerMan · · Score: 2, Funny

      And this is often the curse of object-oriented programming. Objects carries more data than necessary for many of the uses of the object. Only a few cases exists where all the object data is used.

      That sounds like bad software design that isn't specific to OO programming. People are perfectly capable of wasting memory space and CPU cycles in any programming style.

      For example, I worked with "senior" (~15 years on the job) C programmers who thought it was a good idea to use fixed-size global static arrays for everything. They also couldn't grasp why their O(N^2) algorithm--which was SO fast on a small test data set--ran so slowly when used on real-world data with thousands of items.

      --
      [b.belong('us') for b in bases if b.owner() == 'you']
    5. Re:Of Course by Anonymice · · Score: 5, Funny

      I can't speak to emacs...

      RTFM.
      C-x M-c M-speak

    6. Re:Of Course by Shin-LaC · · Score: 2, Interesting

      That's not true. I ran 10.3 on a 233 MHz iMac G3 (a machine designed for Mac OS 9), and used that as my main machine for a couple of years. It ran fine.

    7. Re:Of Course by Anonymous Coward · · Score: 2, Interesting

      What you fail to grasp is what your senior programmers understand: heap allocation is non-deterministic. Any code that your write that mallocs after initialization is done, wouldn't even pass a peer review where I work (doing safety-critical, fault-tolerant, real-time embedded). Maybe you should learn a little more before running off at the mouth.

    8. Re:Of Course by drinkypoo · · Score: 2, Informative

      This attitude is actually the root cause of the problem, I've never heard this called "Page's Law" but in the industry it's known as "Code Bloat".

      No, it's called making a design decision. If the RAM is cheaper than doing it with less RAM, then you buy more RAM. If it isn't, you spend more time on design. The only bad part about it is when it leads to excessive power consumption. Which is, you know, all the time. But that's really the only thing strictly WRONG with spending more cycles, or more transistors.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    9. Re:Of Course by AmiMoJo · · Score: 5, Insightful

      OO was never designed for speed or efficiency, only ease of modelling business systems. It became a fashionable buzz-word and suddenly everyone wanted to use it for everything, so you end up in a situation where a lot of OO programs really only use OO for allocating memory for new objects.

      I'm not trying to be a troll here, I just find it odd that OO is considered the be-all and end-all of programming to the point where people write horribly inefficient code just because they want to use it. OO has it's place, and it does what it was designed to do quite well, but people should not shy away from writing quality non-OO code. I think a lot of programmings come up knowing nothing but OO these days, which is a bit scary...

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    10. Re:Of Course by hedwards · · Score: 3, Interesting

      That's definitely a large part of the problem, but probably the bigger problem is just the operating assumption that we can add more features just because tomorrows hardware will handle it. In most cases I would rather have the ability to add a plug in or extension for things which are less commonly done with an application than have everything tossed in by default.

      Why this is news is beyond me, I seem to remember people complaining about MS doing that sort of thing years ago. Just because the hardware can handle it doesn't mean that it should, tasks should be taking less time as new advancements are going, adding complexity is only reasonable when it does a better job.

    11. Re:Of Course by drsmithy · · Score: 5, Funny

      agreed. Apple always manages to break it too with OS X. from 10.1 to 10.4 the OS notably improved in speed on even older equipment each time it upgraded, even on older PPC G3 and G4 machines.

      Of course, when you're starting from a point of such incredibly bad performance, there's not really anywhere to go but up.

      It would have been more impressive if they'd somehow managed to make it slower with each release.

    12. Re:Of Course by Trillan · · Score: 2, Interesting

      I found (and measured) 10.3 faster than 10.2 on my then-computer, and 10.4 faster than 10.3 (once indexing was complete). Numbers long since lost, though, sorry.

    13. Re:Of Course by Jeremy+Erwin · · Score: 3, Interesting

      Let me give you an example. 10.2 introduced Quartz Extreme, which offloaded certain 2D graphics operations from the CPU onto the graphics card. If you had a graphics card capable of supporting non-powers-of-two textures, it was snappy.

      OSX 10.3 introduced Expose, a method of manipulating windows that leveraged Quartz Extreme. Flashy, but it also made skilled users more productive. It is dog slow on any mac with non-QE graphics card. It imposed a somewhat minimal load on any modern mac. 10.3 feels faster than 10.2, even though there's more going on in the background.

      As for memory, memory's cheap. I recall someone defining supercomputing as "buying processing power with increased memory usage..."

    14. Re:Of Course by grumbel · · Score: 4, Interesting

      Well, that depends, OOP alone is certainly not the guilty one for causing all the slowdown, but abstraction in general is guilty for a lot of things. Todays software is just way to removed from the actual hardware to allow certain kinds of optimizations. Random example: When you have a 2D game on older hardware (say GBA or similar) you could scroll by manipulating two bytes that represent the scroll offset, everything else was done in hardware. How do you scroll in a 2D game today? Fullscreen refreshes, as you don't have any access to the hardware to allow faster ways to scroll. So in the worst case you have to manipulate not 2 bytes, but around six million of them. Thats quite a few orders of magnitude difference there, that you can't really optimize away today.

      Now for real games of course you might have a GPU that can handle that amount of speed and since modern games are 3D you don't really have a choice of not doing fullscreen refreshes to begin with, but as soon as you look into web games you can see all the problems, games in Flash or Javascript most of the time run completly terrible, worse then games you might have played a decade or two ago, because those games don't even have GPU access but instead pump their data through layers upon layers of abstraction before they finally hit the graphics card.

      In the end I think the core problem is simply that todays software is written far to often for an abstract black box, instead of for a actual hardware. Especially web development is just way to removed from the actual machine to even have a chance of running quickly. To make things really fast you would have to optimize all layers of abstractions that the code has to run through, but most often you just don't have the control over it, as development is far more spread out these days. Its no longer your code and the hardware, its your code, dozens or even hundreds of libraries and then maybe far far away some piece of hardware again.

    15. Re:Of Course by mzs · · Score: 2, Informative

      I think there are a lot of copy constructors called when using STL that a lot of people do not expect. The algorithms themselves tend to be well implemented though. None of that really has much to do about OO though, templates with structs with no member functions and lots of casting of void * could have been used instead.

    16. Re:Of Course by iluvcapra · · Score: 2, Funny

      That must be why there were dozens of threads updating and reading from these massive global arrays without using any kind of synchronization mechanism.

      Shows what you know, they were just using classic Mongolian Actorfuck Model :)

      --
      Don't blame me, I voted for Baltar.
    17. Re:Of Course by bill_kress · · Score: 2, Insightful

      If it get's broken, it's not a law.

      What's the obsession these days with calling observations "laws"?

      Moore's law is simply an observation, as is this. Actually software will be as slow as hardware of the period allows, rarely faster. Can we call this Bill's Law? Note the relationship between Moore's and Page's is obvious when you consider Bill's law.

      Hmph, it's all just observations that happen to hold true for a short period. If that period happens to be 20 years, us short-lived humans extrapolate it to a constant like "Housing prices will always rise".

      Not that I really care, but it seems to be an insult to people who actually discover real laws of nature an physics to have a casual observation given as much verbal weight.

    18. Re:Of Course by AmiMoJo · · Score: 2, Interesting

      But show me any complex system that can't be done well with OO.

      Emacs - proof you can write an entire operating system without a single line of OO code :)

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    19. Re:Of Course by Obfuscant · · Score: 2, Insightful
      Actually, the only place it really wins is when you have other odd jobs to take care of, as long as we're talking about SMT stuff;

      It wins big in more than one category.

      • Inventory. You stock one part that does a dozen different things.
      • Parts count. One chip does the work of one chip and some caps and resistors.
      • ECO. If you need to change the timing from your '555', you need to change C and R; you just reprogram the uC.
      • Single domain. You hire digital designers, ignore analog.
      • Repair. If the 'timer' doesn't work, you replace one chip, you're done.

      I'm sure there are some I'm forgetting.

    20. Re:Of Course by Omestes · · Score: 2, Insightful

      If you don't want bloat, fine. Don't use any windower (they all have feature creep lately), use lynx, use pine, use the lightest install you can find.

      But you would be in a tiny, infinitesimal almost, minority. Actually not, since you admit that KDE's bloat is fine. One person's bloat is another's essential feature. Looking into the OSS world, Vim and Emacs are the definition of bloat. Why use a simple editor, when you can have your own mini-OS?

      In apps like Office, and Photoshop, there are, suprisingly, people who actually use all these features you don't. Sure, at some point nobody uses them all, but between everyone they are all used.

      Yes, there is a point where it gets absurd.

      All software I installed on my computers, was free (as in everything) for me. So I care for not buying another piece of RAM.

      I don't get how one statement implies the other. There is no implication, I would replace "so" with "and".

      --
      A patriot must always be ready to defend his country against his government. -edward abbey
    21. Re:Of Course by Twinbee · · Score: 2, Insightful

      Since C structs are effectively C++ objects, would you be against using structs for the same reasons too?

      --
      Why OpalCalc is the best Windows calc
    22. Re:Of Course by mzs · · Score: 2, Informative

      Almost any modern system, to the CPU, a 32-bit aligned access is atomic. If they were just reading the global array, there is no need to use a lock, in fact this is a placebo lock, that adds unnecessary burden on the memory or reservation system. It is common for realtime that the global data is only modified at certain times when readers are not running.

    23. Re:Of Course by NewbieProgrammerMan · · Score: 3, Interesting

      I would like to see your fancy C++ with templates stuff compile onto some of the proprietary toolkits I have seen for small ARM and gate array systems. Writing code that uses a number of fixed sized simple data structures all written in C makes it very easy to port it to embedded systems. The moment you use something that seems as innocuous as C++ exceptions...

      This was not (and never was going to be) an application for an embedded or real-time system. I'm not sure what I said that left everyone with the impression that I'm bashing real-time or embedded development practices. I know (more now than I did before) that there are reasons for doing such things in those environments, but none of those applied in this situation.

      My point wasn't that they should switch to C++ or something else. Personally, I don't like fancy C++ template stuff; I'd rather just stick with ANSI C. What I was trying (but apparently failing) to do was make the point that needless memory bloat isn't some curse that only applies to OO development, as was suggested in the post I initially replied to.

      --
      [b.belong('us') for b in bases if b.owner() == 'you']
    24. Re:Of Course by NewbieProgrammerMan · · Score: 2, Informative

      This wasn't a realtime system, and they weren't just doing atomic updates to a single array. There were transactions that involved changes to multiple data structures, and there was no synchronization of any kind. There were several long-standing bugs caused by reader threads getting their data while another thread was halfway through an update.

      Sorry for not including all this detail in my original post.

      --
      [b.belong('us') for b in bases if b.owner() == 'you']
    25. Re:Of Course by simplerThanPossible · · Score: 2, Interesting

      Yes, the 2nd ed of the Dragon book rewrote their sample parser in OO. It was much simpler, clearer and cleaner in procedural version in the 1st ed.

    26. Re:Of Course by drsmithy · · Score: 2, Informative

      Then MS and Vista must have knocked your sox off!

      Funny you should say that, because it's an example that drives the point home so well. For all the flack Vista got about performance, on the day it was released, you could buy a PC - for less than the price of the cheapest iMac (a machine that would barely run OS X at all) - that would run it *well* (dual-core, 2GB RAM, 256MB GPU).

      In contrast, it took Apple *years* after OS X 10.0 - and due at least as much to dramatically faster hardware as improved software - before it could even be described as "not slow". You quite literally could not buy hardware that OS X ran well on for _years_ after its release. It wasn't until the G5 Macs (and a few $129 OS updates) that anyone could even begin to call it "fast" with a straight face.

      However, the increases from 10.2 to 10.3, and 10.3 to 10.4 were impressive in their own right because 10.2 was where the new OS X reached speed parity with OS 9, IMO.

      Well, I have to disagree. OS 9 was quite quick even on paltry ~200Mhz G3s. To my standards, OS X doesn't run "fast" on anything less than a G5 (not, not even dual G4s). Even then, my Mum's 1.9Ghz/2.5GB G5 iMac can be sluggish without reason.

      I'm hoping that 10.6 will be the speed boost I was expecting since they are claiming to have focused on 'under the hood' improvements (whatever that really means).

      It means they're modifying it to make better use of the 4+ cores/CPU future, just like Microsoft did with Vista and Windows 7. As a result, on "low-end" single-core machines it will probably be slower, and "mid-range" dual-core machines it won't improve much.

    27. Re:Of Course by pizza_milkshake · · Score: 2, Insightful

      You realize your argument "on modern systems with plenty of processor and RAM" is exactly the point, right? It's fast because it is run on machines that are many orders of magnitude more capable than when 'vi' was originally written.

    28. Re:Of Course by crmarvin42 · · Score: 2, Interesting

      I don't know why you brought up price. "Page's Law" makes no mention as to the price of hardware or software, nor did I, so your bringing up of the tangential "Macs cost more" meme seems superfluous.

      IMO, the measure of new softwares speed is best measured on older (6-12mo old) hardware since the older version was not written with the newer hardware in mind and the newer software was written with the old and new hardware in mind (or at least should have been).

      I grant that early versions of OS X were not ready for prime time. That's why OS 9 was still shipping alongside OS X. BUt I have to disagree as to your claim that the improvements in OS X were related primarily to increased Hardware performance. My 800MHZ PBG4 shipped with OS 9 and X (10.1 IIRC). It got faster with every OS update it was capable of using (Leopard requires 867MHZ or better). The Hardware didn't change at all, only the OS.

      OTOH, I tried installing Vista on a machine that already was running XP and it was slower for just about everything. Once again, only the OS changed, not the hardware. That's why I brought up Vista. It's an example of newer software running slower on the same hardware thus supporting this "Page's Law"

      --
      Bureaucracy expands to meet the needs of the expanding bureaucracy.-Oscar Wilde
    29. Re:Of Course by ion.simon.c · · Score: 2, Informative

      Have you read his follow-on comment?

      http://slashdot.org/comments.pl?sid=1252121&cid=28173153

      Here's the money quote:

      There were several long-standing bugs caused by reader threads getting their data while another thread was halfway through an update.

      That behaviour can't be intentional. :)

    30. Re:Of Course by billcopc · · Score: 2, Insightful

      You give developers far too much credit. They don't code to previous-gen and current-gen hardware, they let the compiler worry about making it run fast. New compilers = new optimizations. New processors = new compiler flags to enable. I don't think the average Mac developer actually tunes his/her code for any specific hardware generation. If it runs on their development machine, it gets shipped an hour later.

      --
      -Billco, Fnarg.com
    31. Re:Of Course by billcopc · · Score: 3, Interesting

      That's still about 100 times more memory than is required to edit a text file. How do you think people got by in the 286 days when 640 Kb was standard ? Does vim allocate ridiculously oversized buffers just to show a blank screen ?

      I don't mean to pick on vim specifically, all software is guilty of this pointless bloat. Instead of having tiny apps that load and run at lightning speed, we continue to build these sloppy behemoths that can't accomplish the simplest things without triggering a dozen page faults and diddling some redundant spinlocks. It's fine to add media to make things esthetically pleasing, but code bloat benefits no one.

      With today's hardware and its ludicrous speed, we should be adding intentional delays to our code, because it should be running so damned fast that usability would suffer. The user should be the bottleneck, not the software. We have machines that are literally a thousand times faster than that heavy old 286, yet the load times for today's software are longer than booting Wordperfect 5.1 from a 360k floppy.

      --
      -Billco, Fnarg.com
    32. Re:Of Course by NewbieProgrammerMan · · Score: 3, Insightful

      Thanks for trying, ion.simon.c. I didn't know it was this big of a sin to accidentally offend realtime developers on Slashdot.

      --
      [b.belong('us') for b in bases if b.owner() == 'you']
    33. Re:Of Course by SL+Baur · · Score: 2, Insightful

      One catch in performance is that it sure is faster to use RAM for data, but there is also a lot of useless data floating around in RAM, which is a waste of resources.

      RAM is cheap these days.

      I thought we were talking about performance? Adding more memory for a slow app does not necessarily make it faster when we're involved with parallel architectures. Maybe that ought to be a law of its own. See http://lwn.net/Articles/250967/

      All memory is not created equal. As CPU speeds have risen, it is becoming increasingly expensive to access main memory - you need to keep things in the CPU cache(s). As NUMA architectures increase in importance, that will become even more true. Today's supercomputer is tomorrow's high end server is next week's common desktop box.
      Anyway, Ulrich Drepper put it better than I can in the link above.

      Storage devices are still slow and the most interesting ones have a finite (Though still large) number of writes.

      That part is true, however absolute read/write speed may not necessarily have anything to do with absolute performance. The basic idea is that you need to move less rarely accessed data to more expensive (in terms of access time) storage and keep the most actively accessed data in the fastest cache/(on|off node)memory as you can.

  2. The 'easy' way by Dwedit · · Score: 2, Interesting

    Make developers target a slow and memory constrained platform. Then you get stellar performance when it runs on the big machines.

    1. Re:The 'easy' way by imgod2u · · Score: 4, Insightful

      The problem there is that there gets to a point where the user just won't notice "stellar" speeds. Take a video game for instance. Anything past ~70 fps is really unnoticeable by the average human eye. If you design the game to run at 70 fps for a slow and memory constrained machine, the user won't really notice his quad-SLI or whatever vacuum cleaner box being any better. And you've sacrificed a lot in visual quality.

    2. Re:The 'easy' way by IamTheRealMike · · Score: 2, Funny

      Ah ha, the business model behind Android finally reveals itself :)

    3. Re:The 'easy' way by Abcd1234 · · Score: 4, Informative

      Make developers target a slow and memory constrained platform. Then you get stellar performance when it runs on the big machines.

      Hardly. Have you never heard of space-time tradeoffs? ie, the most common compromise one has to make when selecting an algorithm for solving a problem? If you assume you have a highly constrained system, then you'll select an algorithm which will work within those constraints. That probably means selecting for space over time. Conversely, if you know you're working on a machine with multiple gigabytes of memory, you'll do the exact opposite.

      In short: there's *nothing wrong with using resources at your disposal*. If your machine has lots of memory, and you can get better performance by building a large, in-memory cache, then by all means, do it! This is *not* the same as "bloat". It's selecting the right algorithm given your target execution environment.

    4. Re:The 'easy' way by imgod2u · · Score: 2, Insightful

      I know you're trying to sound smart here. But it really doesn't take away from my point. Past point x (fill in whatever number you think is beyond the point of noticeability), you can run at any "stellar speed" you want and it wouldn't make a difference. Designing for slow systems with that in mind leads to not utilizing high-end systems.

  3. Most bang for the buck. by rotide · · Score: 5, Insightful
    Why would a company spend money to make software more efficient when the current incarnation does its job just fine?

    While I like the idea of being as succinct and efficient as possible with your code, at what point does it become fruitless?

    Obviously, if you're testing your code on a "new" workstation and it's sluggish, you'll find ways to make it work better. But if it works well? What boss is going to pay you to work on a project for no real benefit other than to point out it is very efficient?

    1. Re:Most bang for the buck. by cylcyl · · Score: 4, Interesting

      When companies go into feature race, they forget that it quickly becomes diminishing returns. As the features you enable are less and less likely for your client base to be interested in.

      However, if you improve the performance of your core functions (thru UI or speed), your entire customer base gets improvement and have a real reason to upgrade

  4. coming from google by ionix5891 · · Score: 2, Insightful

    who are trying to make software be available only via a browser and clunky javascript

      makes this rather ironic

    1. Re:coming from google by Ilgaz · · Score: 2

      No it is their justification to run Office in a Web browser which I did back in 2001, with Think Free Office. Think Free guys used to rely on Java but it changed as technology progresses, now they use mixture of Java, Ajax and HTML technologies. I think some Flash will be involved too.

      Of course, same people laughing at me while using a Office written in Java now talks about what kind of a modern idea Google invented (!) after 8 years.

      Of course, native vs. interpreted application? I purchased Apple iWork, funnily named but piece of art Objective C code as I got couple of PPCG4 which I can't waste with some spoiled search engine guys ''inventing'' things. ;)

    2. Re:coming from google by Anonymous Coward · · Score: 2, Insightful

      So... you don't think it would be a good idea for them to improve the efficiency of their browser and said software? To me it sounds like common sense, not irony... if you're going to run software in a browser via javascript, make it really efficient software.

  5. Nope by Colin+Smith · · Score: 4, Funny

    You just get an app which uses 100k of RAM and 32gb of filesystem buffer.

     

    --
    Deleted
  6. I don't think that holds up by viyh · · Score: 2, Insightful

    "Page's Law" seems to be a tongue in cheek joke since it's sited primarily by the Google folks themselves. It definitely isn't true across the board. It's purely a matter of a) what the software application is and b) how the project is managed/developed. If the application is something like a web browser where web standards are constantly being changed and updated so the software must follow in suit, I could see where "Page's Law" might be true. But if the product is well managed and code isn't constantly grandfathered in (i.e., the developers know when to start from scratch) then it wouldn't necessarily be a problem.

    --
    "I have never let my schooling interfere with my education." --Mark Twain
    1. Re:I don't think that holds up by Keith_Beef · · Score: 5, Informative

      All he has done is put numbers into Wirth's law.

      I remembered this as "software gets slower faster than hardware gets faster", but Wikipedia has a slightly different wording: "software is getting slower more rapidly than hardware becomes faster".

      http://en.wikipedia.org/wiki/Wirth%27s_law

      In fact, that article also cites a version called "Gates's Law", including the 50% reduction in speed every 18 months.

      K.

  7. They probably will. by fuzzyfuzzyfungus · · Score: 5, Insightful

    I'd suspect that Google probably will. Not because of any OMG special Google Genius(tm), but because of simple economics.

    Google's apps are largely web based. They run on Google's servers and communicate through Google's pipes. Since Google pays for every server side cycle, and every byte sent back and forth, they have an obvious incentive to economize. Since Google runs homogenous services on a vast scale, even tiny economies end up being worth a lot of money.

    Compare this to the usual client application model: Even if the scale is equivalent, the maker of the software doesn't pay for the computational resources. Their only pressure is indirect(i.e. customers who don't buy because their machines don't meet spec, or customers who get pissed off because performance sucks). They thus have a far smaller incentive to watch their resource consumption.

    The client side might still be subject to bloat, since Google doesn't pay for those cycles; but I suspect competitive pressure, and the uneven javascript landscape, will have an effect here as well. If you are trying to sell the virtues of webapps, your apps are (despite the latency inherent in web communication) going to have to exhibit adequate responsiveness under suboptimal conditions(i.e. IE 6, cellphones, cellphones running IE 6), which provides the built in "develop for resource constrained systems" pressure.

  8. Page's Law. by C_Kode · · Score: 2, Insightful

    Sounds like someone is trying to cement their legacy in history by stamping their name on common knowledge. :-)

    1. Re:Page's Law. by mdmkolbe · · Score: 4, Insightful

      Do you remember Moore because of his law or because he co-founded Intel?

  9. Bloat wastes energy. by miffo.swe · · Score: 2, Insightful

    One thing that rarely comes up when discussing bloat and slow underperforming applications is energy consumption. While you can shave off some percents off of a server by maximizing hardware energy savings you can save much more by optimizing its software in many cases.

    I think it all comes down to economics. As long as the hardware and software industry lives in symbiosis with their endless upgrade loop we will have to endure this. To have your customers buy the same stuff over and over again is a precious cash cow they wont let go off volontarily.

    --
    HTTP/1.1 400
  10. Grosch's (other) Law by Anonymous Coward · · Score: 4, Informative

    Herb Grosch said it in the 1960's: Anything the hardware boys come up with, the software boys will piss away.

  11. Adding RAM to an existing device by tepples · · Score: 5, Insightful

    RAM is cheap these days.

    Unless you would need to add RAM to millions of deployed devices. For example, the Nintendo DS has 4 MB of RAM and less than 1 MB of VRAM, and it broke 100 million in the first quarter of 2009. Only one DS game came with a RAM expansion card.

  12. Larger user base by DrWho520 · · Score: 2, Interesting

    Making later versions of software run more efficiently on a baseline piece of hardware may also make the software run more efficiently on lesser pieces of hardware. Does the increase in possible install base (since your software now runs on hardware slower than your baseline) justify a concerted effort to write software that runs more efficiently?

    --
    The cancel button is your friend. Do not hesitate to use it.
  13. Ask Apple how they do it. by toby · · Score: 2, Interesting

    10.0, 10.1, 10.2, 10.3, and maybe 10.4 was a series of releases where performance improved with each update. I don't run 10.5 so can't comment if the trend continues.

    --
    you had me at #!
    1. Re:Ask Apple how they do it. by blueZ3 · · Score: 2, Insightful

      Because 10.0 sucked? I don't know if it was intentional or not, but that was slow enough that I noticed that speed was an issue (and I was using only the most pedestrian of software--browser and email). It was as if the OS was completely unoptimized. If subsequent releases had gotten slower, they'd have been going backwards.

      My primary computer, my wife's computer, and our HTPC are all Macs, so I'm not trolling... but damn was it slow.

      --
      Interested in a Flash-based MAME front end? Visit mame.danzbb.com
  14. Benefits of being able to render over 100 fps by tepples · · Score: 3, Informative

    Anything past ~70 fps is really unnoticeable by the average human eye.

    I disagree. If you can render the average scene at 300 fps, you can:

    • Apply motion blurring (think 4x temporal FSAA) at 60 fps. Film gets away with 24 fps precisely because of motion blur.
    • Keep a solid 60 fps even through pathologically complex scenes.
    • Render at 60 fps even when four players have joined in on the same home theater PC.

    If you design the game to run at 70 fps for a slow and memory constrained machine [...] you've sacrificed a lot in visual quality.

    A well-engineered game will have (or be able to generate) meshes and textures at high and low detail for close-up and distant objects respectively. On high-spec PCs, you can use the high-detail assets farther from the camera; on the slow and memory-constrained PCs that your potential customers already own, they get the low-detail assets but can still enjoy the game.

    1. Re:Benefits of being able to render over 100 fps by imgod2u · · Score: 3, Insightful

      I disagree. If you can render the average scene at 300 fps, you can:

              * Apply motion blurring (think 4x temporal FSAA) at 60 fps. Film gets away with 24 fps precisely because of motion blur.
              * Keep a solid 60 fps even through pathologically complex scenes.
              * Render at 60 fps even when four players have joined in on the same home theater PC.

      All of your points follows the argument "you can do 60 fps with higher quality". Which was pretty much my argument...

      A well-engineered game will have (or be able to generate) meshes and textures at high and low detail for close-up and distant objects respectively. On high-spec PCs, you can use the high-detail assets farther from the camera; on the slow and memory-constrained PCs that your potential customers already own, they get the low-detail assets but can still enjoy the game.

      It could or it could not. The point is the game can utilize the computing power of higher-end systems. It isn't just designed for a slow and memory-constrained machine and then runs at blazing fps on faster systems; you can change visual quality settings to use more computing power.

    2. Re:Benefits of being able to render over 100 fps by Shin-LaC · · Score: 3, Informative

      Mod parent up. And here is a page that explains some common misconceptions.

  15. Theoretically, yes. Practically, not often by jollyreaper · · Score: 2, Interesting

    Business managers don't want to pay for great when good will do. Have you gotten the beta to compile yet? Good, we're shipping. I don't care if it was a tech demo, I don't care if you said your plan was to figure out how to do it first, then go back through and do it right. We have a deadline, get your ass in gear.

    Then the next release cycle comes around and they want more features, cram them in, or fuck it we'll just outsource it to India. We don't know how to write a decent design spec and so even if the Indians are good programmers, the language barrier and cluelessness will lead to disaster.

    And here's the real kicker -- why bother to write better when people buy new computers every three years? We'll just throw hardware at the problem. == this is the factor that's likely to change the game.

    If you look at consoles, games typically get better the longer it's on the market because programmers become more familiar with the platform and what it can do. You're not throwing more hardware at the problem, not until the new console ships. That could be years and years away, just for the shipping, and even more years until there's decent market penetration. No, you have to do something wonderful and new and it has to be done on the current hardware. You're forced to get creative.

    With the push towards netbooks and relatively low-power systems (low-power by today's standards!), programmers won't be able to count on power outstripping bloat. They'll have to concentrate on efficiency or else they won't have a product.

    There's also the question of how much the effort is worth. $5000 in damage to my current car totals it, even if it could be be repaired. I can go out and buy a new car. In Cuba, there's no such thing as a new car, there's only so many on the market. (are they able to import any these days?) Anyway, that explains why the 1950's disposable rustbuckets are still up and running. When no new cars are available for love or money, the effort in keeping an old one running pays for itself.

    Excellence has to be a priority coming down from the top in a company. If cut-rate expediency is the order of the day, crap will be the result.

    --
    Kwisatz Haderach
    Sell the spice to CHOAM
    This Mahdi took Shaddam's Throne
  16. KDE4 is ~30% faster than KDE3 by kojot350 · · Score: 3, Informative

    KDE4 is ~30% faster than KDE3, mainly because of the Qt4 vs. Qt3 improvements and vast redesign of the KDE itself...

    --
    [ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo *Click*
  17. Page's Law is really May's Law! by Winter+Lightning · · Score: 3, Informative

    "Page's law" is simply a restatement of May's law:

    "Software efficiency halves every 18 months, compensating Moore's Law".

    David May is a British Computer scientist who was the lead architect for the Transputer. See:
    http://en.wikipedia.org/wiki/David_May_(computer_scientist)
    and page 20 of:
    http://www.cs.bris.ac.uk/~dave/iee.pdf

  18. quote by Jeremy+Erwin · · Score: 2, Informative

    A supercomputer is a device for turning compute-bound problems into I/O-bound problems.

    -- Ken Batcher

  19. 10 years experience on this by mzs · · Score: 2, Interesting

    I have realized that I will have been working as a dev for ten years now in four days. I've worked at a few places and I think that the reason for this is pretty straight forward, poor benchmarks used poorly.

    We have all heard the mantra about optimizing early is evil but there are two issues to contend with. You get to a crunch time towards the end and then there is no time to address performance issues in every project. By that time so much code is written that you cannot address the performance issues in the most effective way, thinking about what algorithm to use in the dataset that ends-up being the common case. So instead some profiling work gets done and the code goes out the door.

    So for success you need to have some performance measurements even early on. The problem is that in that case you end-up with some benchmarks that don't measure the right thing (that is what you discover near the end) or you have worthless benchmarks that suffer too much from not being reproducible, taking too long to run, or not giving the dev any idea of where the performance problem really is.

    So what ends-up happening is that only after the code base has been around for a while and you get to rev n + 1 is there any real handle on any of this performance stuff. But often what ends-up happening is that project management values feature additions so as long as no single benchmark decreases by more than 2-5% and the overall performance does not decrease by more than 15% compared to the pre feature build, it gets the okay. Then a milestone arrives and there is no time again for systematic performance work and it ships as is.

    The right approach would be at that stage to not allow a new feature unless the overall benchmark does not improve by 2% and to also benchmark your competitors as well but that just does not happen except in the very rare good groups sadly.

  20. Google Native Client by bcrowell · · Score: 3, Insightful

    coming from google who are trying to make software be available only via a browser and clunky javascript makes this rather ironic

    The transcript leaves out a few things from the video, the main one being that Brin gives a list of applications he has specifically in mind: gmail, chrome, and Native Client. Of these, only gmail is a javascript application. Chrome doesn't run in a browser, Chrome is a browser. And Native Client is an attempt to get out of the very situation you're complaining about, where web-based apps have to be written in javascript. NativeClient (NaCl) is a browser plugin that allows native x86 code to run in a browser. If you read the paper on NaCl I linked to above, the emphasis on security is impressive. They clearly understand what a disaster things like ActiveX have been in terms of security, and they're serious about making it safe with all kinds of fancy techniques.

    A couple of other observations:

    They're not kidding about making performance a priority, it's not a new priority for them, and they seem to be doing well at it. When I first tried the Google Docs spreadsheet, its performance was completely unacceptable. A year or so later, it was mentioned on Slashdot again. I was all set to make a snarky post about its poor perfomance, but then I stopped and decided to try it again to see if the performance was still as bas as I remembered. It was much better, so I posted on Slashdot to say so. I then got an email from one of the developers working on Google Docs to say he was glad I'd noticed the improvement, because it had been their main priority recently.

    In the video, Brin refers to "Page's law" as the "inverse of Moore's law." I would actually say it's not so much an inverse of it as a corollary of it. Developers are always going to be as sloppy as they can get away with being, and they're always going to prefer to work with languages and APIs that give them the maximum amount of abstraction, platform-independence, and expressiveness. Software houses are always going to market proprietary software based on features (which the user can read about before making a decision to buy), not on performance (which the user can't test until he's paid for the software and tried it out on his own machine). Therefore they're always going to write software that performs as badly as they can get away with. That means that if Moore's law improves hardware performance by a factor of x over a certain period of time, software developers are just naturally going to write software that performs worse by a factor of x over that same period of time.

    The really scary thing about browser-based apps, in my opinion, is that they represent a huge threat to open-source software, exactly at the moment when the OSS software stack is starting to be pretty comprehensive, mature, and usable. If you look at the web apps out there, essentially all of them are under proprietary licenses, and nearly all of them are impossible to run without a server running the completely closed-source server-side code. Although Google generally seems pretty friendly toward OSS, I don't really want to have to rely on their good intentions. They are, after all, a publicly traded company, whose only reason for existing is to maximize returns for their shareholders. From this perspective, NaCl is actually pretty scary. The default with javascript is that at least you get to see the source code of the client-side software, even if it's under a proprietary license; I think it's only natural for me to demand this if my web browser is going to run random code off of some stranger's web site. With NaCl, the default will be that all I ever get to see is the object code of the program. This is even worse than java applets; java is actually relatively easy to disassemble into fairly readable source code. (And in any case, java applets never caught on.)

  21. The really important comparison by henrypijames · · Score: 2, Insightful

    ... isn't software v. hardware, but speed v. functionality, i. e., in the history of most software, the decrease in speed is disproportional to the increase in functionality. Of course, "disproportional" is subjective, and new, advanced functionalities are generally more complicated and resource intensive than old, basic ones. So a simple reverse-linear relationship might be unrealistic, but when many software don't even manage to beat the reverse-quadratic ratio, there's definitely something wrong.

  22. Not the same laws by lie2me · · Score: 2, Interesting

    "Wirth's law" is more quality related, as in "crappy SW can benefit from faster HW".

    "Gates's Law" is user-side observation, "speed of commercial software generally slows by fifty percent every 18 months thereby negating all the benefits of Moore's Law".

    "Page's Law" is reflection on SW development of a single company: "software gets twice as slow every 18 months... Google plans to reverse this trend and optimize its code."

    I wonder if anyone else noticed these differences.

  23. "cache" by SL+Baur · · Score: 2, Insightful

    Vista can aggressively cache *and* leave resources to user programs.

    Caching is retaining resources obtained from a slow source medium in a higher speed medium after an initial request.

    What Vista does is fill your RAM with stuff it thinks you're likely to use, in a background thread when your computer is idle. Thus it takes none of your (the user) time.

    Nope. Not the same thing. That's precaching. A precache patch to Linux was rejected precisely because people noticed the same sorts of things Microsoft Vista users are complaining about.

    The issue with precaching is lets say the operating system decides to load /usr/bin/emacs into pagecache, just because I might use it. Now, since I'm an XEmacs user that's all wasted pagecache space and the time it took to load it. Background or not, it consumes system resources.

    I do want large data files, particularly obtained via NFS to be cached as long as reasonable. That's a typical work use case.

    My two most frequently loaded apps are World of Warcraft and Mail.app. In neither case do I want those loaded at system boot or at any other time that I have not selected them to be loaded. WoW is for play and I want it to reside quietly on disk when I'm doing something else. Mail.app I only use when I'm connected to the company VPN. There's an idiot MSEXCHANGE server behind it, so a few seconds loading time doesn't impact the sync time once its loaded.

    I certainly do not want NeoOffice precached because even though it's kind of slow to load, it's usually wasted space because I only ever need to use it once a week or so.

    If Microsoft Vista is really doing precaching not caching, then perhaps you should listen to your users screaming out in pain.

    The only real crime is that every other OS doesn't do the same thing.

    Whatever. Linux doesn't do it because it causes performance issues. Precaching != caching. Linux, Solaris, Mac OS X seem to be pretty good at caching things people want to have cached. Or to put it in other terms, you have "invented" something that has been rejected as inferior technology in the Unix world. Can you guys please take out a software patent on it? Thanks.

    Caching something that will never be used again will eventually correct itself. Precaching something that will never be used is a total waste of system resources.