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)."

255 comments

  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 Anonymous Coward · · Score: 0

      This is true to a certain extent. But 10.3 and 10.4 are dog slow on hardware that was originally designed for 10.0 and 10.1. On those G3 and G4s, 10.2 was the nice middle ground. Of course, Apple has that tendency to make major changes to the APIs every few OS releases, making application updates for those 10.2 apps near impossible (for many programs you'd need to step up to 10.3 or 10.4).

    3. Re:Of Course by drinkypoo · · Score: 1

      I can't speak to emacs, but these says vi is generally vim, which is much much heavier than classic vi. It also does vastly more.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    4. 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.
    5. Re:Of Course by drinkypoo · · Score: 1, Interesting

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

      All data looks notchy if you sample it at high resolution and don't apply smoothing.

      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. Storage devices are still slow and the most interesting ones have a finite (Though still large) number of writes.

      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

      In fact you will often see today that a job that could be handled by a 555 and a couple of caps has been replaced with an internally-clocked microcontroller simply because it's a known platform and development is easy. When you have is a vertical mill, everything looks like a machining project. But you can make a water block with a drill press...

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    6. 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.

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

      One word : Embedded. With advent of low-power generacl computing, ARM Netbooks operating again in hundred mhz range and battery life being prioritized above all else, Page's Law will get and is getting a thorough workout.

    8. 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']
    9. Re:Of Course by BeardedChimp · · Score: 1

      No not linear, in the case of flash its more like an exponential decay.

    10. Re:Of Course by falcon5768 · · Score: 1

      Really? I have had no issues on 300 mhz G3s and Tiger. The key is memory though, if you only upgrade to the minimum it can be slow. It needs at least 1 ghz to run good, but it WILL run at a decent clip for web/wp.

      --

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

    11. Re:Of Course by Anonymous Coward · · Score: 1, Insightful

      so if you need more memory for it to run better, how is it not page's law?

    12. Re:Of Course by Dishevel · · Score: 1, Redundant

      I refuse to take any anecdotal information from a person who can't tell the difference between speed and capacity.

      --
      Why is it so hard to only have politicians for a few years, then have them go away?
    13. Re:Of Course by Anonymice · · Score: 5, Funny

      I can't speak to emacs...

      RTFM.
      C-x M-c M-speak

    14. Re:Of Course by Anonymous Coward · · Score: 0

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

      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".

      "What, our software runs too slow? Well, I suppose we could re-code it in something less than 5 layers from the OS, or optimize our code, or use a more efficient algorithm... but that would cost us more money. We decided to just half-ass our coding, and force you to upgrade your hardware instead."

      Part of this problem is simple laziness, part of it is intentional marketing, and part of this is due to CS majors focusing more on languages like Java that hide hardware requirements instead of C, etc. which require that you manage your system resources.

    15. Re:Of Course by Anonymous Coward · · Score: 0, Flamebait

      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.

      I hate to have to be the one to break this to you, but

      you are a retard. (And probably a Real Programmer too, or at least what passes for one these days)

      There are a lot of programs with excessive memory usage that don't use object-oriented languages, and there's a lot of programs with proper memory usage that do use object-oriented languages. Programmer skill (or lack thereof) is far more of a contributing factor, to such a degree that tiny bits of overhead from using OO is lost in the noise.

      If I had to choose one single thing as "the curse of OOP", it'd probably instead be that it makes it far too easy to add needless complexity and abstraction and class hierarchies a fucking mile deep.

    16. Re:Of Course by morgan_greywolf · · Score: 1

      Heavier? Yes. But is it heavy on modern systems with plenty of processor and RAM? No way. It's my number one text editor for quick file edits.

    17. Re:Of Course by Tyr.1358 · · Score: 1

      "Look at Firefox 3 vs 2. Seems to be a marked improvement in speed to me."

      Speak for yourself.

    18. 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.

    19. 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.

    20. 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.'"
    21. Re:Of Course by Anonymous Coward · · Score: 1, Informative

      Wow, maybe you should have listened to your senior programmers. Faster execution speed is not often the goal. Static allocation is deterministic. Slower and deterministic is better in certain types of programming, than faster and non-deterministic. You scoff at their O(N^2) algorithm without even considering all the ramifications. Let me guess: Java programmer?

    22. Re:Of Course by Anonymous Coward · · Score: 0

      class hierarchies a fucking mile deep

      Think of them as trees of evolution. Many branches go extinct during time.

    23. Re:Of Course by Jeremy+Erwin · · Score: 1

      10.5 puts a bit of a load on older machines. Time Machine, though very useful, occasionally bogs down my 1.25 PMG4. On a modern mac, it's just an extra thread.

    24. Re:Of Course by kieran · · Score: 1

      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.

      Surely this is a problem begging a solution in the form of smarter compilers?

    25. Re:Of Course by Hurricane78 · · Score: 1

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

      Oh, and you can also can have less memory consumption by doing less. Which is called "feature bloat". (Not the good one, like in KDE, but the bad one, like in MS Office.)

      --
      Any sufficiently advanced intelligence is indistinguishable from stupidity.
    26. 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
    27. 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.

    28. Re:Of Course by jeffb+(2.718) · · Score: 1

      In fact you will often see today that a job that could be handled by a 555 and a couple of caps has been replaced with an internally-clocked microcontroller simply because it's a known platform and development is easy.

      One microcontroller beats one special-function chip plus caps on part count, board space, power consumption, and probably cost. And it can take care of other odd jobs around the circuit as well.

    29. 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.

    30. 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.

    31. 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..."

    32. Re:Of Course by drinkypoo · · Score: 1

      Oh, and you can also can have less memory consumption by doing less.

      Go back to BSD 4.4-lite (or whatever) if you want to...

      Which is called "feature bloat". (Not the good one, like in KDE, but the bad one, like in MS Office.)

      Uh, what? KDE's bloat is somehow good?

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    33. Re:Of Course by drinkypoo · · Score: 1

      One microcontroller beats one special-function chip plus caps on part count, board space, power consumption, and probably cost. And it can take care of other odd jobs around the circuit as well.

      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 can save on design time if you already have a circuit which essentially does what you want, that you can slice pieces off of to produce your intended design. On a small run it's not worth it to actually do design, especially if you're going to have to deal with licensing and RF testing and crap, and you want to pass the first time.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    34. Re:Of Course by Dr_Barnowl · · Score: 0, Troll

      Heavy is a relative term, of course.

      My entire vim install folder : 21MB, including docs

      Memory eaten by vim on loading - 8.6MB
      Memory eaten by WINWORD.exe - well, it started at 17MB. All I did was let it sit there for a couple of minutes, and close the help browser, now it's eaten 20.3MB. Typed "Hello There", and it goes up to 21.4MB.

      Memory consumed by vim for "Hello There" - 76 KB. Winword - 1.1MB

      Hell, Word uses as much memory as vim does to load, just to save the file to Hello There.doc

    35. Re:Of Course by NewbieProgrammerMan · · Score: 1

      No, what I failed to do is adequately convey that these guys didn't know how to work with anything that wasn't a fixed-size array. Worried about non-deterministic heap allocation, were they? That must be why there were dozens of threads updating and reading from these massive global arrays without using any kind of synchronization mechanism.

      --
      [b.belong('us') for b in bases if b.owner() == 'you']
    36. 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.

    37. Re:Of Course by ClosedSource · · Score: 1

      "In fact you will often see today that a job that could be handled by a 555 and a couple of caps has been replaced with an internally-clocked microcontroller ..."

      A 555 timer is pretty nice, but given it's poor accuracy, I don't see it as a viable alternative to a microcontroller in most cases. Do you have any examples of jobs that are being done today by a microcontroller that could use a 555 instead?

    38. Re:Of Course by drinkypoo · · Score: 1

      Word offers typesetting and more-or-less-WYSIWYG operation. Vim can be used with other packages to get typesetting, but there's no WYSIWYG. At least compare notepad.exe... which is crap compared to vi, I will warranty you, but at least it's a fixed text editor. And probably still uses more RAM :)

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    39. Re:Of Course by ClosedSource · · Score: 1

      Hey, it's great to hear from a few people on Slashdot who actually understand real-time and don't assume it means "fast as a bunny".

    40. Re:Of Course by Anonymous Coward · · Score: 1, Funny

      I worked at a company whose CEO said the definition of real time programming was a program that ran "really fast".

      I left that place as soon as I could.

    41. Re:Of Course by ion.simon.c · · Score: 1
    42. Re:Of Course by ion.simon.c · · Score: 1

      What do you think about the "generic programming" capabilities that the STL and C++ templates allow?

      (Pardon my English, I haven't had my coffee yet.)

    43. Re:Of Course by Anonymous Coward · · Score: 0

      Your implication that OO is unsuitable in many circumstances is extremely misleading. For simple scripts, sure, forget it. But show me any complex system that can't be done well with OO.

    44. Re:Of Course by Anonymous Coward · · Score: 0

      Yeah, I've been doing real-time embedded for about 15 yrs now. I always get a good laugh at some of the "programming advice" modded as informative on this site. You know, from the guys that think every programming environment is like their PC, and Java rulez. My co-worker and I call these guys "dudes."

    45. Re:Of Course by ebuck · · Score: 1

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

      Ram is not so cheap across all platforms. I have a number of machines that are sitting at the maximum ram they support. Short of replacing the machine (or replacing the motherboard which is effectively replacing the machine) I cannot add in some RAM.

      Atom based netbooks are cheap these days, and a lot of people want to leverage them. How can you upgrade the ram to 4GB? You can't.

      Laptops are very popular, and a surprising number of them top out a 4GB.

      A large number of desktops top out at 8GB.

      Machines that can handle more than 8GB tend to top out at 64GB. I'm not going to say that 64GB should be enough for anyone, but there's a significant price jump because a 64GB machine is considered low-end "enterprise" class.

      More ram is sometimes the answer, but over applying that answer is practically begging for code bloat. The truth is that companies fail to profile their products most of the time. They have found out that cutting profiling saves a little money because it's the kind of QA that most people won't notice. The costs associated aren't absorbed by the software vendor, it's absorbed by it's clients. Eventually, if it gets bad enough, then they'll fix memory and cpu consumption on a case-by-case basis, but before it gets that bad, they will just recommend a bigger machine.

      As long as they can pass the costs onto the clients without upset, the clients will get blessed with requiring more powerful hardware. Until the performance becomes an issue, the company likely won't spend too much money pursuing optimizations.

    46. 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.

    47. Re:Of Course by mzs · · Score: 1

      Sure RAM is cheap, plentiful, and fast, but it is a shared resource which then gets paged to slow magnetic storage once your system crosses a magic line. Once you use a lot of VADDR you start needing to do more TLB lookups. And there are the other more limited shared resources to contend with, TLB caches and memory caches which are hard to upgrade. In multiprocessors you are also using memory bandwidth when cache lines are dirtied.

    48. Re:Of Course by Anonymous Coward · · Score: 0

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

      Bullshit. That is what n00bs says to justify their ignorance on Computer Science.

    49. 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.
    50. 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.

    51. 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
    52. Re:Of Course by cstacy · · Score: 1

      OO was never designed for speed or efficiency, only ease of modelling business systems.

      OO was designed for speed and efficiency for implementing complex applications such as operating systems. (There, fixed that for you.) I'm thinking of the OO that predated C++ or Java -- the stuff in Smalltalk and Lisp from the 1970s. (Which still works better than the newer stuff...)

    53. Re:Of Course by Anonymous Coward · · Score: 0

      And that proves what? That he still doesn't know what he is talking about? His handle says it all.

    54. Re:Of Course by NewbieProgrammerMan · · Score: 1

      Best anti-pattern name ever! :)

      --
      [b.belong('us') for b in bases if b.owner() == 'you']
    55. Re:Of Course by Anonymous Coward · · Score: 0

      So what? I once wrote an entire run-time executive that allowed applications to run and manipulate shared data in a completely lock-free manner. This was a deterministic program with real-time guarantees can achieve.

    56. Re:Of Course by Anonymous Coward · · Score: 0

      "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." - by Z00L00K (682162) on Monday June 01, @09:24AM (#28166975) Homepage

      True! Because, iirc? For every object you instance, it's an added 472 bytes of memory used by said object, @ least using Microsoft or Borland Compilers for Win32 PE development.

      NOW - Though that might not seem like a lot, you have to consider that the gui alone is probably composed of N objects, & whatever classes you make full-blown objects will be adding additional overheads, per each one created.

      (Plus, Hey - I don't need an object-oriented design to do a "Hello World" level (meaning simpler/smaller) program: Procedural programming does the job nicely!)

      APK

    57. 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.

    58. Re:Of Course by Kz · · Score: 1

      similar experience here. i used up to 10.4 on my iMac DV (400Mhz G3 with 384MB RAM). 10.5 is too slow, OTOH

      --
      -Kz-
    59. Re:Of Course by daveime · · Score: 1

      As I remember the 555 used to do horrible spiky things to the voltage, that's why we always had to do decoupling on the power lines, even in silly little 9v PP3 battery projects. We always used to substitute a couple of gates from a 4001 or 4011 to make better behaved frequency generators. Of course, I'm going back about 30 years ...

    60. 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
    61. 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
    62. Re:Of Course by Omestes · · Score: 1

      Machines that can handle more than 8GB tend to top out at 64GB. I'm not going to say that 64GB should be enough for anyone, but there's a significant price jump because a 64GB machine is considered low-end "enterprise" class.

      A bit of hyperbole there. My laptop has 4GB, uses a ton of bloated software on my win7 test install, and very rarely needs to write out. My main computer, used for gaming, writing, graphic design, browsing, etc.. has 6GB and I don't think I've actually had it write to cache in 6 months, barring a couple rare circumstances (playing Fallout3 while deciding I really need to process that RAW file, forgetting I'm encoding a AVI file, all at the same time, for example), but never due to running "normal" bloated applications. Right now I'd say 4GB is more than enough for the casual user, less if your using a leaner OS like Linux (where the only writes I get on my laptop are from wonky WINE and VM experiments).

      Though sometimes it is shocking to check my usage. I'm standing at 3.18GB of tied up ram right, thanks to running WoW, iTunes, Firefox with 3 tabs open, and some random TSRs.

      --
      A patriot must always be ready to defend his country against his government. -edward abbey
    63. Re:Of Course by mzs · · Score: 1

      Sometimes your 15 year senior programmers have earned their salt, in fact they usually have. 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, you're in a world of hurt the moment you step out of GCC, VC++, SUNWpro, or XLC.

      Here is one story. There is a fellow that likes to run C++ stuff he has written on our systems. The smallest config we run with that stuff has 16MB RAM and a 200MHz processor and we use GCC, so it's okay. One day he wanted to run on a new bigger system, so I enabled the C++ run time libs, this added 17s to the boot and used dozens of MB of RAM, but whatever this was in a system with 128 MB RAM and 1GHZ cpu. Then we got newer boards like those but with 256 MB RAM and 1.3GHz cpu and gigabit. Occasionally the boards would reset. It turned-out that due to all the extra resources and the dynamic sizing his code used, every now and then the HW watchdog timer was not getting twiddled (0.5s on a system with realtime requirements of various things in some cases of 4ms) and the board was being reset.

    64. 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.

    65. Re:Of Course by LavosPhoenix · · Score: 1, Informative

      yeah, because passing a implicit "this" pointer in C++ and a typed object pointer to a function are so vastly different in storage sizes. Not. And seriously, if you are loading tons of useless data into an object, you've completely missed the point of Object oriented programming in the first place. So don't blame your failure to use logic and reasoning in OOP as a general case that applies to all software. C# and Java use garbage collection, which involves nondeterministic reclaimation of objects, which will affect performance. Sure, GC may allow for easier lockfree structures, but it simply pushes the delay to the GC, and a longer term storage of the deleted objects which then have to be reclaimed by the properly implemented lockfree GC. It's far more important to make sure your data fits in cache lines to prevent cache trashing, which means that your data has to be reloaded into the CPU's cache from higher level caches, like L3 or RAM. Just take a look at Intel's Thread Building Blocks. None of their concurrent data structures are lockfree, but do make sure to properly allocate objects to fit cache lines.

    66. Re:Of Course by crmarvin42 · · Score: 1

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

      Then MS and Vista must have knocked your sox off!

      I do have to agree about the 10.0->.1 & 10.1->.2 transitions being unsurprising. OS 9 was faster than either of the first two iterations of OS 10. 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. OS preferences asside, Mac OS development has managed to break this law (that I'd never heard of before today).

      I was kind of bummed that 10.5 wasn't faster overall than 10.4 on my MBP, but it wasn't any slower either. 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).

      --
      Bureaucracy expands to meet the needs of the expanding bureaucracy.-Oscar Wilde
    67. Re:Of Course by Anonymous Coward · · Score: 0

      >> A lot of object-oriented programming is somewhat like using 18-wheelers for grocery shopping.
      > Surely this is a problem begging a solution in the form of smarter compilers?

      Actually, the solution is composition of objects instead of inheritance!

    68. 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']
    69. 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']
    70. 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.

    71. 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.

    72. 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.

    73. Re:Of Course by CAIMLAS · · Score: 1

      I'd have to (partially) disagree.

      Sure, any one application, and operating systems, might become faster. But the principle to the premise holds true (and I don't think his statement was accurately stated). Quite simply, the software stack (as a whole) does get more bloated.

      It's not so much speed - clock utilization - that takes a hit over time, it's the memory utilization. Yes, Firefox has improved significantly in speed - but it's also gotten a lot more bloated.

      Likewise, compare W7 to Vista or XP. Faster than Vista, about as fast as XP (so the speed has improved since the last release) but memory use has increased significantly since XP, and marginally since Vista.

      Look at vim. It uses ~7M on a fresh start. That's a bit much for a CLI editor, don't you think? Emacs is worse. Sure, the systems can handle it just fine these days, but it's not insignificant.

      When software systems use more of the available resources, it inhibits innovative software from being developed which would be able to effectively utilize that hardware. Have a ground-breaking product (let's say it's some sort of audio/video package) but it requires 3Gb of RAM to run effectively? Too bad it can't run on a 3Gb system, because the underlying OS is using 2Gb of RAM.

      --
      ~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
    74. Re:Of Course by CAIMLAS · · Score: 1

      I don't know what you're talking about. Compared to OS 9.x, 10.1 was downright evil fast and responsive. Compared to XP on similar hardware (disk, RAM, CPU clock), it was faster and more responsive, as well. Hell, it was close to 2K's responsiveness on the same hardware.

      No, I'm not an Apple fanboy, but it was pretty decent none the less. Point being, it wasn't the kludged behemoth you're making it out to be.

      --
      ~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
    75. 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
    76. Re:Of Course by cekander · · Score: 1

      OO is considered the be-all and end-all of programming

      Not by me. I'm still waiting for AI that will take my high-level executive summary and produce an optimal program that achieves my goals. Until then, I suppose I'll accept OO.

    77. Re:Of Course by drsmithy · · Score: 1

      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).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.

      Yes, but OS X on an 800Mhz G4 is still sluggish and unresponsive. My point was that it took substantial hardware performance improvements *in addition to software improvements* before OS X was fast and responsive. The same was not true of Vista, which could run quite well on only slightly above average _contemporary_ hardware when it was released.

      Or, to put it another way, Vista has less need to improve in performance, because it's just not so damn slow to start with.

      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"

      I think you missed the (somewhat tongue in cheek) point of my first post, which was that OS X could only have gotten faster with further development, because it was so slow to start with.

      Incidentally, I'm fairly sure Vista SP1 and Windows 7 are benchmarking faster than Vista did.

      Of course, this whole "Page's Law" thing is a crock. Software doesn't get slower every 18 months, and certainly not by a factor of two. Software runs as fast 18 months later as the day it was released. *More functional* software may require more hardware resources but, again, that's hardly unreasonable or unexpected.

      *Google's* software might get faster as times goes by, but maybe that's because they, like Apple, have initial software releases that are just incredibly poor performers they simply have no option other than to get better.

    78. 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. :)

    79. 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
    80. 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
    81. Re:Of Course by Anonymous Coward · · Score: 1, Informative

      You gave an example of a complex system that can be done well without OO. GP asked for a complex system that can't be done well with OO.

    82. 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']
    83. Re:Of Course by Anonymous Coward · · Score: 0

      "That's not true."
                Yes it is. 10.3 had 3 major releases worth of speedups, 10.0 did not run acceptably on the boxes of the time (and may not have run well on anything.). 10.0 was *G L A C I A L* compared to 10.1; 10.2 and 10.3 had speedups as well.

                In the more general sense, Page's law is crap. I've seen some applications speed up over time, and plenty of other applications that may not speed up but are not running half as fast every 18 months (I can't bring myself to call it "twice as slow" even if that's what Page's law says.)

                Linux distros as a whole that I've used, have maybe doubled in RAM and CPU requirements, *since 2000*. And most of that was when the distros went from straight ASCII to supporting Unicode and other internationalization stuff, I've had virtually flat system requirements in about the last 6 or 7 years. (Well, my requirements have increased because of running mythtv, HD video, MPEG4, etc., but I've installed on a P2-400 with 256MB and Ubuntu's fine, let alone DamnSmallLinux, PuppyLinux, or Xubuntu.)

    84. Re:Of Course by moosesocks · · Score: 1

      My 1999-era 450MHz G4 supports up to 2GB of RAM, which is absolutely insane for a machine that old. Apple's top-end stuff might be obscenely expensive, but you definitely get your money's worth.

      I still use the machine regularly with 10.3. It works wonderfully as an everyday machine. (10.4 and above ship on DVD, and I haven't bothered installing a DVD drive in the machine, which is still in its stock configuration apart from some extra RAM and a second hard drive.)

      On the other hand, 10.5 is pretty bad. My Intel Mac Mini definitely got slower after installing it. I'm also not to keen on the fact that the maximum amounts of RAM capable of being installed in low-end and portable machines tend to be very small. My 1.66GHz Core Duo Mac Mini has the same maximum RAM capacity as my 10-year old G4.

      --
      -- If you try to fail and succeed, which have you done? - Uli's moose
    85. Re:Of Course by Anonymous Coward · · Score: 0

      Now listen here nigger: I'm just about SICK TO => death of your dumbass faggotry.

      This paragraph makes no goddamn sense! Look at me, I'm APK.

      Listen here motherfucker: I know where to find you. And I'm watching

      Yuri Klastalov

    86. Re:Of Course by Anonymous Coward · · Score: 0

      Now listen here nigger: I'm just about SICK TO => death of your dumbass faggotry.

      This paragraph makes no goddamn sense! Look at me, I'm APK.

      Listen here motherfucker: I know where to find you. And I'm watching

      Yuri Klastalov

    87. Re:Of Course by highonv8splash · · Score: 1

      All of my software is twice as fast on twice as fast hardware, yours must be broken.

    88. Re:Of Course by ultranova · · Score: 1
      • Production costs. You only need one manufacturing line pushing out one kind of chip, rather than needing one line for each chip type.
      • Flexibility. You don't need to retool your production line when you come up with a new product or discontinue your old one.
      • If you produce the chips yourself, you could probably make a nice extra profit by selling them to your competitors. If you don't, you can likely get generic chips from multiple manufacturers, rather than being held hostage to a single one.

      In a contest of MASS production vs. mass production, the former always wins for efficiency :).

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    89. Re:Of Course by geekoid · · Score: 1

      Yes, and you can buy a 3 cylinder car for less then a Ferrari.

      "could not buy hardware that OS X ran well on for _years"
      Blatantly false.

      Vista's Multi-core usage is horrid.
      They also managed to screw up USB.

      Vista is a lot slower an the same machine running XP Pro.
      Slowest OS they have ever released.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    90. Re:Of Course by Anonymous Coward · · Score: 0

      C-x M-c is undefined

      However,

      M-x doctor

      probably does roughly what you want.

    91. Re:Of Course by Aram+Fingal · · Score: 1

      Well I disagree with your disagreement about OS X performance. I went through progressive upgrades of OS X on the same hardware on several machines and the upgrades, except 10.5, were definitely progressively faster. I would agree that Apple's speed improvements in Software were not as fast as Moore's law but that isn't the point. The point is that OS X did get faster on the same hardware, counter to Page's Law. It is also true that OS X started with very poor performance and then improved. Yellow Dog Linux did perform much better than 10.0 on the same hardware back then. Today, my experience is that the relative performance of OS X and Linux is a lot closer, though I think Ubuntu (which is what I use now) is still faster.

      Your impression may be a matter of RAM. Under about 256 MB RAM, OS 9 will perform better than any version of OS X. But 10.3 and above are faster as long as you have more RAM than that. 10.3 and above run reasonably fast on G3 Macs (unless you're really short on RAM) and quite well on G4 machines. I still have a 500Mhz G3 PowerBook "Pismo", 768 MB RAM with 10.4.11 and that's at least as fast as the same machine running OS 9 (I have it set up to dual boot.) It's certainly much more usable. It's more stable and can remain very responsive while running more programs at once than it can with OS 9. This machine doesn't have a suitable graphics card for Quartz Extreme. 10.4 is even more impressive on G3 and G4 machines if you remove Dashboard.

      The other possibility (besides RAM) is that you haven't done a good job with maintenance. The unwritten rule is that you really need a third party disk utility like Alsoft Disk Warrior or Prosoft Drive Genius. Without one of those, you will see deterioration of performance over time, if not worse problems.

      Better support for multi-core machines is one of the improvements in 10.6. The other big one is the 64-bit kernel. It is also better optimized for Intel processors in general. In fact it's Intel only so there won't be any speed comparison on PPC machines. Single core Intel (Core Solo) Macs are very rare and I don't have one to try out but I think 10.6 will probably run as fast or faster on those than 10.5 does.

    92. Re:Of Course by drsmithy · · Score: 1

      10.3 and above run reasonably fast on G3 Macs (unless you're really short on RAM) and quite well on G4 machines.

      I have an old 1Ghz G4 iBook with 1.25GB RAM in one of my desk drawers, and on that I would describe OS X as "tolerable", so long as you don't put it under anything more than a trivial load (Mail + Safari with a few tabs, Word, maybe iTunes in the background).

      The idea of OS X running "well" on a G3 is, I have to say, utterly laughable. While I'll admit to having not tried it for several years, I do remember frustrating delays just opening a drop-down menu in Finder with nothing else running, and resizing a window being like watching a slide show. Fire up a few applications and the nostalgic feeling of using an early floppy-drive-only Mac was quite eerie.

      I've used just about every Mac released since the mid-90s, at one time or another (it's handy to be friends with someone who sells them). The first ones that even came close to running OS X to the standard *I* would call "well" were the G5s. Even those - like my mother's 1.9Ghz/2.5GB iMac - are sluggish at times.

      You may be happy with OS X's performance on a G4 (but if you are, I certainly hope you don't criticise Vista, since it will be dramatically better on any time-and-price-equivalent PC, and no worse on basically anything you can successfully install it to). Personally, I think it's irritatingly sluggish at best (dual 1Ghz+ G4s), borderline unusable at worst (anything <867Mhz).

      Using a more current comparison, if I load up my wife's 2.4Ghz/2GB MBP with the same sort of workload I have on my (significantly slower - Opteron 165, 2GB RAM, triple-head) Vista PC every day, it's damn near unusable.

    93. Re:Of Course by metaforest · · Score: 1

      Thanks for pointing that out. The Senior Programmer mentioned above sounds like he spent a lot of years doing embedded design.

      The GP sounds like a modern OOP Skript Kiddie.

      Younger SEs cut their teeth on machines where understanding the underlying machine is not all that useful. If you are programming in Java or C#, Pearl, Python, PHP, Ruby... HLL de jure, it is generally not worthwhile to even consider the underlying metal because your code is never even going to see a significant portion of that metal's full potential. In some cases any attempt at understanding the underlying metal is going to hurt your project's portability, when someone in the team gets cocky and implements a platform dependent optimization.

      Embeded firmware developers have the opposite experience. They always have to understand the underlying metal intimately.

    94. Re:Of Course by metaforest · · Score: 1

      While structs certainly help with readability and managing linked objects, they can also cause problems...

      I recently ran into a problem like this. I was implementing a user preference object, since my compiler is C99 based I figured no biggie I'll implement a few nested typedef structs, and then instance the sucker with a C99 initializer...

      Ok first problem for my compiler the C99 instancing is not robust, and initializing nestes arrays of structured arrays was simply FAIL. Choosing a better compiler for this project is not an option... that call was made at a higher pay grade.

      Second problem... The linker will not promise that all of my fields will be contiguous for this struct, so I don't get the luxury of running a void* over it to serialize it. For portability reasons I don't get to force the linker to behave.

      Third problem.... even if the linker did promise it would keep the struct contiguous, another of the constraints would put me in fail territory. Part of my memory budget was given to a new feature... this meant that I no longer had enough memory to copy the EEPROM version of the preference struct into the working memory. I have to access it in-place from the EEPROM, thus I don't get random access to it from my code.

      With all this FAIL, I re-implemented the feature using a couple of arrays. I found I could meet all of my design goals. I reduced my memory footprint, and my code footprint, as well.

      The only thing I sacrificed was readability.

      By attempting to use good structure oriented C, C++ practices I came painfully close to shooting my toes off.

    95. Re:Of Course by Twinbee · · Score: 1

      I'm not certain, but I think the D programming language (like C but better) does structs much better (no 'holes' in the struct memory etc.)

      --
      Why OpalCalc is the best Windows calc
    96. Re:Of Course by metaforest · · Score: 1

      I'm not certain, but I think the D programming language (like C but better) does structs much better (no 'holes' in the struct memory etc.)

      Which part of "Choosing a better compiler for this project is not an option... that call was made at a higher pay grade." didn't you understand?

      Additionally I doubt D would help here since the Linker is calling the shots about where the struct elements get stored. The linker is doing the right thing, in this case, in that it packs the fields of a globally declared struct with other declared globals in a way that leaves the fewest holes possible, considering the MCU I am dealing with has segmented working memory, this is a good trade off. The sacrifice is that you cannot count on a global or static complex array to have all of it's fields lined up head-to-tail the way you can in GCC, and most large platform compilers.

    97. Re:Of Course by SL+Baur · · Score: 1

      It's fast because it is run on machines that are many orders of magnitude more capable than when 'vi' was originally written.

      Yes, but ...

      My first introduction to vi was on the computer science VAX in school. I was fortunate enough to have serial terminal connection in my dorm room (a whopping 1200 BAUD). On the nights when the class using Mathematica had homework due vi was totally unusable. ed was still usable though.

      Page's law doesn't apply to vi proper (nvi nowadays). That hasn't had any new features added to it for many years. It does apply to vi -> vim though. If you run the two side by side[1], there is a noticeable difference.

      FSF Emacs -> XEmacs could also be considered an application of Page's law. More features, more code, slower.

      Of things I have intimate knowledge, the sequence XEmacs 19.12 (regarded by some as the fastest XEmacs ever) to 19.14 (regarded as the slowest of the 19s) is certainly Page's Law. 19.14 to 19.16 bucked Page's law, though 19.16 was largely a maintenance release so it was more or less as fast as 19.15 which improved on 19.14 quite a bit.
      XEmacs 20.0 to 21.1 was also inverse Page's Law as 21.1 with internationalization compiled out was faster than the 19s were.

      Of course Page's Law can be broken. It's very hard work, but it can be broken.

      [1] Actually I do. On the infrequent occasions I have use of vi, I get vim on Mac OS X/Linux and classic vi on Solaris.

    98. Re:Of Course by SL+Baur · · Score: 1

      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 ?

      Wrong era for vi. How about 64k of address space and separate I & D spaces got you double that? VAX 11/780s, which were about as standard as you could get for the early to mid 80s were expandable up to 1MB. VAX 8600s (VAX 11/790) expandable to 256MB. Of course on multiuser systems, you have to share memory with everyone else ...

      Vim has plugins. It also has graphics modes that you can compile into it. I find it absolutely fascinating that the vim binary in Mac OS X 10.5.7 is 2.7MB. The XEmacs 21.4.20 binary I'm using is 1.6MB. Empirical evidence would suggest that they're trying to sneak the kitchen sink into vim.

      Oh and get off my lawn! i286s and 640k being standard indeed.

    99. Re:Of Course by SL+Baur · · Score: 1

      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.

      C is very much "sugar coated assembly language". As a very low level language it allows with dispensing will all unnecessary language features. COBOL was never a language touted for its speed, a better example is Ada. While not quite as low level as C, it has come a remarkably long ways as compiler technology has improved and it *was* designed with performance as a goal.

      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.

      Those are strange examples. C++ and Java have no special provisions to address deadlocks (out of the languages listed so far, only Ada attempted to address that with its rendezvous based parallelism). Any real world parallel application is prone to race conditions no matter what language it's written in. Linked lists as basic type are common in functional languages and there's no doubt about it, it's a lot more convenient to deal with lists as a basic type not a library.

      A lot of object-oriented programming is somewhat like using 18-wheelers for grocery shopping.

      Maybe you should have stopped there.

      I think the internet would be better off with something more akin to Ada as a base language than anything else. The way the language regards data coming from the outside world with utter contempt and horror is exactly the right kind of attitude you need to develop safe web applications.

    100. 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.

    101. Re:Of Course by SL+Baur · · Score: 1

      Thanks for pointing that out. The Senior Programmer mentioned above sounds like he spent a lot of years doing embedded design.

      Could be. ~15 years is just long enough that he could have been trained by FORTRAN programmers too.

      Or it could be that you've run into the guy I used to work with in the 1980s who was the whiz kid (graduated top of his class), fresh out of college, and frankly admitted he couldn't understand anything more complicated than arrays. He then proceeded to implement a complicated naturally graph structured and open-ended data algorithm using fixed sized arrays even after I spent hours explaining to him how to do that with more appropriate data structures.

      In some cases any attempt at understanding the underlying metal is going to hurt your project's portability, when someone in the team gets cocky and implements a platform dependent optimization.

      Agreed, but to some extent it depends on the application context. In my current job, I am maintaining an application that is a custom database that runs on only one server at a time.

      There is certainly some motivation to make machine specific optimizations as performance is always an issue. The wise programmer knows enough about the metal (and the underlying OS) to know which optimizations are portable and which are not.

      I've had to make code work on more different versions of Unix (and underlying architecture type) than there exists of different versions of Microsoft Windows, including the "service packs". This also means that I've never written serious code to take specific advantage of Linux-only system calls, as much I like Linux (user since 1995, developer since 1987).

      It rather worries me that so many of the younger generation have never truly experienced heterogeneous environments.

    102. Re:Of Course by SL+Baur · · Score: 1

      You mean Symbolics Lisp Machines - http://www.lispmachine.net/

    103. Re:Of Course by metaforest · · Score: 1

      It rather worries me that so many of the younger generation have never truly experienced heterogeneous environments.

      So you are saying the kids these days are into.... um... homogeneity? lol.

    104. Re:Of Course by SL+Baur · · Score: 1

      Look at vim. It uses ~7M on a fresh start. That's a bit much for a CLI editor, don't you think? Emacs is worse. Sure, the systems can handle it just fine these days, but it's not insignificant.

      That's an apples and oranges comparison. emacs is intended to stay up for months editing dozens if not hundreds or thousands of files in a session. Start up time is insignificant.

      Vi (now called nvi) and vim are two different beasties. Vi is great for when you need a quick edit on a machine you just logged into and do not want to create a backup file. At least, that's my use case for vi.

      I think vim is bloated and not good at what it does. Traditional vi is quite good at what it does and I, for one, will gladly welcome my nvi overlords to get a useful vi back.

    105. Re:Of Course by SL+Baur · · Score: 1

      Or you could call me "homophobic". Your way is kinder.

      It also disturbs me that between my own machines and my work machines there are only two different CPU architectures x86 and sparc. 20 years ago, I regularly worked on six (maybe more, it's been a long time).

    106. Re:Of Course by metaforest · · Score: 1

      Ummm.....I have well... four

      x86
      PPC
      ARM9
      68K

      and that doesn't include non-general embedded systems that don't do "Real OSes"

      Sounds like you are slipping, man.

      You should check into a clinic or something to get that Homogeneity treated.

    107. Re:Of Course by badkarmadayaccount · · Score: 1

      RE:TLB
      Is it actually necessary. A MMU probably isn't the simplest thing these days, and I was wondering if you could implement Virtual Memory a different way.
      A linked list of segments full of pages, each segment declaring its virtual vs. real delta, for instance. BTW, Virtual Memory usually means mapping addresses, not hitting the page file. Remember, you are not on Neowin, /. is the place where UNIX nerds hang out.
      Now, to figure out whether this post is OT, or not...

      --
      I know tobacco is bad for you, so I smoke weed with crack.
    108. Re:Of Course by badkarmadayaccount · · Score: 1

      Mod parent up!

      --
      I know tobacco is bad for you, so I smoke weed with crack.
    109. Re:Of Course by badkarmadayaccount · · Score: 1

      (Lisp is way more abstract) than (any macros on steroids, with or without dataflow (message passing) semantics).

      --
      I know tobacco is bad for you, so I smoke weed with crack.
  2. Page Must Have Been a Java Programmer by Anonymous Coward · · Score: 0, Flamebait

    Page must have been a Java programmer, because Java is slow as hell and it only gets slower.

    1. Re:Page Must Have Been a Java Programmer by eldavojohn · · Score: 1

      Page must have been a Java programmer, because Java is slow as hell and it only gets slower.

      Hey, it's no C or C++ but the story we discussed yesterday seemed to plot Java's average performance at a pretty desirable position. And I think you're wrong about the Java getting slower ... I think most implementations of the byte code interpreter get faster as time progresses and that the language just gets misapplied in its quest to be the silver bullet. An example is massive allocations of strings instead of string buffers. There's just way better languages to handle strings in, in my opinion.

      --
      My work here is dung.
  3. 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 AvitarX · · Score: 1

      Not true.

      An app that aggressively uses the massive amount of RAM in a modern sub-$1000 computer will be quicker than one that uses the disk.

      I don't have that new of a system, so it wouldn't help me, but if an app was able to assume it could have 1GB or RAM it can run quicker than one that needs to stay svelte.

      Consider this entry level machine:http://www.newegg.com/Product/Product.aspx?Item=N82E16883113094

      It has an easy 3-4GB of RAM just for applications, programs made to not take advantage of that will not run as fast as they could.

      --
      Wow, sent an e-mail as suggested when clicking on "use classic" banner, and got a fast response that addressed my msg
    3. Re:The 'easy' way by IamTheRealMike · · Score: 2, Funny

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

    4. Re:The 'easy' way by L4t3r4lu5 · · Score: 1

      This is why I'm interested in checking the license details of Windows 7 Starter Edition.

      Designed to run on a netbook? Less bloat? Reduced cost to the consumer? Win-win.

      I use third party media players and don't care about Aero Glass. If it supports DX10, we have a new Windows gaming platform.

      --
      Finally had enough. Come see us over at https://soylentnews.org/
    5. 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.

    6. Re:The 'easy' way by 91degrees · · Score: 1

      Sometimes. But at a cost to developer time. Sometimes it makes more sense to pay more for hardware than pay for better developers.

    7. Re:The 'easy' way by Anonymous Coward · · Score: 0

      I do this all the time. The production environment gets a nice bad ass piece of hardware. The devs get the my old 1 cpu 512 meg ram box for the DB server. Make it smoke on that and it will fly on the production hardware. If they need a dual proc box for race conditions. It will not be much better.

      This has nice advantages of finding deadlocks and other performance bottlenecks NOW rather than when 20 people are breathing down your neck. If it is SLOW on that box I have found it is usually not much better on faster hardware.

      People who say 'oh the hardware will just be faster/more/cheaper' later are just being lazy. Hell ive done it. Want to know what I was being...?

    8. Re:The 'easy' way by drsmithy · · Score: 1

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

      Non-sequitur.

    9. Re:The 'easy' way by Archangel+Michael · · Score: 1

      And you've sacrificed a lot in visual quality

      Eyecandy is nice, but I prefer fun games to play. I play Wii more than PS3, PS2, and the Xboxes combined. Only PSP gets more playtime, and that is because I can actually take it with me.

      --
      Agent K: A *person* is smart. People are dumb, stupid, panicky animals, and you know it.
    10. Re:The 'easy' way by Anonymous Coward · · Score: 0

      And of course people are willing to pay for the additional development time...

    11. Re:The 'easy' way by UnknownSoldier · · Score: 1

      > Take a video game for instance. Anything past ~70 fps is really unnoticeable by the average human eye.

      I can tell you've never worked on racing games, or understand how our eye works. i.e. "Temporal Aliasing." I used to set my CRT monitor to 100 Hz because at 60, 70, and 80 Hz, I found the image "distracting", whereas the 100 Hz image seemed "rock solid."

      Also, just because you are rendering at 59.97 Hz doesn't imply the rest of the game is. Typically physics engines run 2 to 3 times the rendering rate.

      So don't assume "stellar speeds" is not important. Loading balancing the various sub-systems to a game is still important. i.e. AI (Artificial Ignorance.)

    12. Re:The 'easy' way by entrigant · · Score: 1

      When your target execution environment is a multi-tasking OS you should assume the worst and try to play nicely with others. Just machine might have 2GB of RAM doesn't mean your app should use all of it or even a large part of it.

    13. 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.

    14. Re:The 'easy' way by Blakey+Rat · · Score: 1

      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.

      Now if only all the Slashdotters criticizing Vista would realize that when they complain about high memory usage...

    15. Re:The 'easy' way by UnknownSoldier · · Score: 1

      Of course there are exponential decreasing returns, but it doesn't start until MUCH higher, like 100 Hz, not like the 30 Hz or even 60 Hz that you are proposing.

      There is a reason why film can run smoothly at 24 fps, and yet when games do the exact same thing, they appear stuttery.

      As someone who has worked on rendering, and games, my experience tells me that you need to study the "problem" more.

    16. Re:The 'easy' way by weicco · · Score: 1

      Tell that to my Oracle database server :(

      --
      You don't know what you don't know.
    17. Re:The 'easy' way by Abcd1234 · · Score: 1

      Something tells me Oracle's recommended practice is to have it running on it's own box (the same is true of MS SQL, BTW... it'll also chew up all physical memory in its default configuration).

      Again, it's all about the expected operating environment. To you expect to have to play with others, or do you expect to have the box all to yourself? If the latter, then by all means, chew up all the memory if it'll allow you to perform tasks more quickly. A web browser, OTOH, obviously must be a little more careful.

    18. Re:The 'easy' way by imgod2u · · Score: 1

      As someone who understands english, my experience tells me you should learn to parse arguments better.

      "Above x (fill in whatever number you want here)".

      You're going off on a tangent. I know it's typical on /. to argue for argument sake in order to look smart but seriously, stay on topic.

    19. Re:The 'easy' way by TheLink · · Score: 1

      In my experience film does not run smoothly at 24 fps.

      Either they have to smear and blur it all over the screen so you can't see the jerkiness (but that means you see less stuff). Or it looks like it's "rippling" down or something.

      With LoTR some of the computer generated scenes were sharp (not fake motion blurred), but because it was 24fps it was jerky especially in the scenery pans.

      The resolution was good. But if it was a PC game, one would be thinking about getting a faster graphics card :).

      Too bad most LCDs are slow. Some of the older ones even have terrible input lag/latency.

      --
    20. Re:The 'easy' way by cute-boy · · Score: 1

      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.

      Except that you tend to be using hardware which consumes more energy resources and precious materials for both running and manufacturing. Even with the combination of cheaper and more energy efficient hardware to offset this, this tends to simply encourage more of it to being used.

      -R

    21. Re:The 'easy' way by Eli+Gottlieb · · Score: 1

      It's an operating system. It's supposed to leave the resources to the user programs.

    22. Re:The 'easy' way by uiuyhn8i8 · · Score: 1

      In short: there's *nothing wrong with using resources at your disposal*.

      Of course not, as long as you are sure that everyone during the lifespan of the software uses a machine which is as fast or faster than yours, and that they are running it on a machine with the same or less load than you are, and you are sure that any future expansions to the software or the evironment in which the software runs will not make it slower because you were lazy in the beginning and made it 'just good enough'.

      A good programmer makes no such assumptions.

    23. Re:The 'easy' way by Blakey+Rat · · Score: 1

      It's an operating system. It's supposed to leave the resources to the user programs.

      But it does. The two aren't mutually-exclusive: Vista can aggressively cache *and* leave resources to user programs.

      It takes time to fill RAM, because you have to load stuff from disk (or network, or whatever). It takes no time to empty RAM. Zero. This is an extremely basic fact that a lot of "technical" people on this board simply don't understand.

      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.

      If another program requires memory, Vista just unloads as much cache as is needed to make that program happy. Since it takes no time for Vista to give another program control of that memory, you (the user) have lost no time.

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

  4. 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 fuzzyfuzzyfungus · · Score: 1

      Unlike workstations where(as you say) the value of going from "workstation adequately responsive, 60% load" to "workstation adequately responsive, 30% load" is pretty much zero; it matters on servers, particularly servers running vast numbers of instances of a homogeneous workload. If you have thousands of instances, gains of even a few percent mean substantial reductions in the number of servers you need to run.

    2. 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

    3. Re:Most bang for the buck. by hedwards · · Score: 1

      Because it's not doing it's job just fine if it's inefficient. There's a certain amount of inefficiency that's optimal or acceptable, but milliseconds can and do add up.

      Over the entire company, what might be a minor waste of time for one person can become significant very quickly, which is one of the reasons why updating computers and adding a second monitor can be such a profitable move for a company. Tweaks like that do cost money in the short term, but frequently pay off in the long term.

      The only thing that's really missing is some sort of metric for the bean counters to use to determine how much money to spend on it. I know at my work the amount of time and energy I wait for the database to do transactions with a server across the country really hurts my productivity.

  5. Not twice as slow by aethelwyrd · · Score: 1

    It gets twice as bloated.

    1. Re:Not twice as slow by zippthorne · · Score: 1

      Or as I like to say, "Half Fast."

      --
      Can you be Even More Awesome?!
    2. Re:Not twice as slow by blueZ3 · · Score: 1

      You have an extra "F" in there.

      --
      Interested in a Flash-based MAME front end? Visit mame.danzbb.com
  6. 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.

    3. Re:coming from google by darpo · · Score: 1

      ...and they also came out with Chrome, which set off the current JavaScript speed wars (and which was likely their whole point in releasing Chrome).

  7. 2 reasons why software gets bigger. by goldaryn · · Score: 1

    1) Historically: thwarting piracy. Bigger apps were harder to pirate. Copying 32 floppies = pain in the ass.

    2) The perception of value. More megabytes implies more features implies more value. You can charge more. Also, you can charge people again for what is basically the same product (there are companies that depend on this!)

    1. Re:2 reasons why software gets bigger. by gplus · · Score: 1

      Computer power is like money: Whenever there's more available people will find something to spend it on.

    2. Re:2 reasons why software gets bigger. by ionix5891 · · Score: 0, Flamebait

      Obama is a computer?!

    3. Re:2 reasons why software gets bigger. by ionix5891 · · Score: 1

      wow moderators today dont have a sense of humour (yes that a U in there :D )

    4. Re:2 reasons why software gets bigger. by tepples · · Score: 1

      Obama is a computer?!

      No, but Jamie Foxx and T-Pain are robots.

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

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

     

    --
    Deleted
    1. Re:Nope by Anonymous Coward · · Score: 1, Interesting

      Make them work on a Netbook with a 8.9" 800x600 display, 512MB RAM (much less available with the OS and other applications running), 4GB Flash storage (much less available with the OS and other applications installed).

      The reason? There is such hardware currently in use out there.

    2. Re:Nope by DocHoncho · · Score: 1

      If your goal is a bunch of grumpy developers, then by all means force your dev team to work solely on a bunch of shoddy Netbooks. Instead of using such limited machines for development, test the app throughly on limited hardware and use the data gained for tuning.

      --
      Celebrity worship is a poor substitute for Deity worship and costs more to boot.
  9. 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.

    2. Re:I don't think that holds up by morgan_greywolf · · Score: 1

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

      Wirth? As in guy responsible for Algol and Pascal?

      Yeah, makes sense he'd say something like that! ;)

    3. Re:I don't think that holds up by Anonymous Coward · · Score: 0

      Niklaus Wirth said it best, years ago: "Software gets slower faster than hardware gets faster."

      It should be obvious that this means "software as a whole system", not some individual piece of code you can optimize. We want to simulate the whole universe, but unfortunately, the universe is already an optimal representation of itself. So we'll never run out of tasks that suck up computational power. We also want to maximize human productivity, but that means sweeping optimization opportunities under the rug with each increase in abstraction. So our programs will continue to get less efficient overall.

      --agy

  10. Exactly by Colin+Smith · · Score: 0

    It only makes sense to improve a compiler, library or application if you're going to be the one USING it. Not the one SELLING it.

    If you're selling it then the faster you can get your pile of shit out the door into the marketplace and generating revenue, the better. Hence Java, Ruby etc.

    That is... There is an economic incentive to produce bloated slow piles of crap, and little incentive to produce fast, light, efficient systems. It ain't a technical problem, it's an economic one.

     

    --
    Deleted
    1. Re:Exactly by drinkypoo · · Score: 1

      And just to hammer the point home, this is one of the areas where FOSS is inherently superior; nobody can tell that developer to stop optimizing that loop and go write a new feature. (Unfortunately, nobody can tell them to stop writing new features and fix bugs, either; no plan is perfect.)

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    2. Re:Exactly by yukk · · Score: 1

      No, it pretty much always makes sense to make software more efficient rather than less. Specially for companies like Google who have to run it on their own servers. If it becomes twice as slow then they need at least twice as many servers to provide the same service level. Yes, they do sell their service for others to run on appliances and while it may seem like a good idea to you to force customers to buy 4 appliances to search their website instead of a single efficient one, eventually the competition will begin to look more appealing and sales will be lost. Yes, it makes sense to get a product out the door, but if Rev 2 comes out better AND faster, doesn't your company look better ? Letting code bloat to the point that it slows down 50% is not just lazy and bad for the customer, it's bad for the devs too (and thus the producer) because bad code is more bug-prone and harder to fix or update without producing more bugs. Product releases are usually a balance between "We need to get product out and cash in" and good product.

      --
      The trouble with the rat race is that even if you win, you're still a rat." Lily Tomlin
    3. Re:Exactly by 91degrees · · Score: 1

      Sure they can. A lot of open source software is developed commercially. Most of the rest is to scratch a developers personal itch (it's no coincidence that the best open source tools are for ones used for software development). Both sets of developers will improve it until the software runs adequately on the target platform. Try running any latest version of KDE on hardware that's several years older than it.

    4. Re:Exactly by drinkypoo · · Score: 1

      Try running any latest version of KDE on hardware that's several years older than it.

      AFAIK there's mobile versions of QT, dunno about KDE but there's definitely a mobile GNOME-equivalent (GPE). Angstrom Linux is a distribution based around it, built on OpenEmbedded. I'm working (off and on) to get Angstrom to run on my DT Research WebDT360 (Geode LX 800-based) and have run it on my iPaq H2215 with mixed results.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    5. Re:Exactly by sznupi · · Score: 1

      Try running any latest version of KDE on hardware that's several years older than it.

      Did YOU try? It's perfectly possible, perfectly usable (Athlon XP 1700+, 768mb ram; BTW, NT 6.x doesn't even have drivers for my soundcard, webcam or GFX cards)

      --
      One that hath name thou can not otter
    6. Re:Exactly by SL+Baur · · Score: 1

      Try running any latest version of KDE on hardware that's several years older than it.

      I have. Performance is not an issue, stability is. And your point is?

    7. Re:Exactly by 91degrees · · Score: 1

      Yup. Pretty crappy on a Pentium 3 with 128 Megs that can handle other equally pretty GUIs no trouble at all.

    8. Re:Exactly by 91degrees · · Score: 1

      Try older hardware. Try a machine specced to run XP well.

      KDE will be abysmal. What is it doing that takes so much RAM?

    9. Re:Exactly by sznupi · · Score: 1

      Doesn't change the fact that my machine is "several years older than KDE4", and runs it fine. Yours is memory constrained and I would dare say that it isn't really usable in any modern GUI, as far as actually using it, not booting, goes.

      --
      One that hath name thou can not otter
  11. Speaking of hardware power to waste by Ilgaz · · Score: 1

    I wasn't talking about it for a while as I am tired of Google fanatics but, what is the point of running a software with Administrator(win)/Super User(Mac) privileges every 2 hours that will... check for updates?

    I speak about the Google Updater and I don't really CARE if it is open source or not.

    Not just that, you are giving a very bad example to industry to use as reference. They already started talking about ''but Google does it''.

    Is that part of the excuse? Because hardware guys beat the badly designed software coded by some re-invent wheel guys? Does something run in your server farms opening a socket to the outside World every 2 hours that will check for updates?

    Listen, people purchasing $1400 software are bugged about their paid commercial software checking for updates yet alone it does only check weekly and _if application runs_. We don't have hardware to waste or some top certified security engineers to waste. Stop thinking everyone has some undocumentedly large server farms like you.

    1. Re:Speaking of hardware power to waste by VAXcat · · Score: 1

      Not only that - if GOogle Updater gets blocked by a corporate firewall or proxy authentication, it goes into a snit...and retries approximatey 25 times/second. Multiply by a few hundred machines, and the load on proxies and firewalls becomes significant, not to mention exploding the dize of proxy & firewall logs....I spent a couple of weeks exorcising this particular demon from my network. I was pretty disappointed to see this kind of coding from Google...

      --
      There is no God, and Dirac is his prophet.
  12. 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.

    1. Re:They probably will. by Dhalka226 · · Score: 1

      It is an incentive, don't get me wrong, but I don't think it is as big as you seem to suggest.

      As you said, these things run on Google's servers and communicate through Google's pipes. With the exception of the amount of data that traverses their Internet-bound pipes--which doesn't seem to be what they're referring to--all of these are sunk costs. They can't just call up their providers and downgrade their usage for a while. I don't see Google getting rid of (trashing, selling, donating) these machines if new efficiencies make them obsolete; I don't even particularly see them flipping the power switches to save on power costs. These machines will be needed again, it's just a question of when.

      So the efficiency is, essentially, in slowing down the purchase of new hardware. It's certainly a pressure, but a fairly mild one considering that buying new hardware usually goes hand-in-hand with increase in demand and thus increase in revenue. In a sense, if it DIDN'T all run on their own equipment I think the pressure would be larger. Servicing the same people with a smaller monthly bill is pretty easy to sell ANYBODY on; servicing more people in the future on less new hardware than you would otherwise buy is good, but less compelling.

    2. Re:They probably will. by irchans · · Score: 1

      That was a great post.

      Microsoft does not make it's operating systems faster. (Windows 7 might be an exception.) Instead, it adds more capabilities. Why? Consider Microsoft's incentives for increasing the speed of its operating system. Basically, Microsoft increases its profits if money invested in improving operating system speed creates more money through sales i.e. the derivative of profit from sales with respect to the cost of improving speed is greater than 1.

      Let

      PFS be Profit From Sales
      NPP be Net Profit per sale
      PS be Products Sold
      S be Speed
      CI be the cost of improvement
      D(x) be the differential of x.

      Then

      PFS = NPP * PS.

      D(PFS) / D(CI)
      = D(PFS) / D(S) * D(S)/ D(CI)
      = (PS* D(NPP) / D(S) + NPP * D(PS) / D(S)) * D(S) / D(CI)

      Microsoft does not improve the speed of it's operating systems too much because the consumer does not respond to a 10% improvement in speed with more sales or by paying more for each sale.

      On the other hand, if Google were running a Google specific operating system on many machines, then the economics are very different. I am guessing that Google has spent about 1 billion dollars on computer hardware. They may be running the equivalent of 1 million desktop computers at a cost of say 200 million dollars a year in maintenance. If they can improve the speed of their operating system by 10%, then they save 20 million dollars per year. So if it costs them 40 million dollars to make a 10% speed improvement, they should (and probably will) do it. Forty million dollars corresponds to about 400,000 programmer hours or 200 programmer-years. So if in one year 200 programmers could improve the speed of Google's machines by 10%, then Google will do that.

      The pressure on Microsoft to increase it's speed is not nearly as strong.

  13. emulation layers by Speare · · Score: 1

    When I was a little kid, I saw a new computing device: a Pacman cabinet at the local pinball parlour.

    Since then, I've seen dozens of implementations of it, and they fall into two camps: a knockoff that can hardly be called a Pacman-clone, or a full-up 100% authentic duplicate of the original. Of course the latter is done with emulation. Every important detail of the old hardware can be emulated so a true ROM copy can be run with the same timing and everything behaves properly. If you know the proper secret patterns through the maze, then the deterministic behaviors of Inky, Pinky, Blinky and Clyde will not allow them to catch up to you.

    We also have many kinds of indirection, where data must be handed through one protocol to another, in order to reach the intended platform. I'm not just talking about TCP/IP and routers, but many new layers to the OSI layer cake: encryption, encoding, tunneling and translation.

    Of course, emulation and indirection can go too far. Imagine playing that ROM copy of Pacman on a MAME built for PPC running on Mac OS X Tiger's Rosetta layer, played through a VNC terminal over SSH via an HTTP proxy. That's a contrived (but perfectly possible) example, but I see layers and layers of indirection in real operating systems and applications all the time.

    To break "Page's Law," I expect one should focus on reducing the layers of emulation and indirection.

    --
    [ .sig file not found ]
  14. 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 foo1752 · · Score: 1

      Why would he bother? Google is (will be) far more notable than any silly "Page's Law" will ever be.

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

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

    3. Re:Page's Law. by C_Kode · · Score: 1

      There is a difference here. Software development isn't something new. It's always been known that the more lines of code, generally the slower the execution of the application envolved. Moore pioneered much of the world of CPUs, and Moore's law was named after him, because he was the first to make the observation. A bunch of guys guzzling beer in the back room making a joke, didn't make Larry first. Hell, the world has been screaming about Microsoft's bloatware well before Larry even had the idea to create a search engine.

    4. Re:Page's Law. by Keith_Beef · · Score: 1

      I remember Moore because he played Bond, James Bond.

      http://en.wikipedia.org/wiki/James_Bond_(film_series)#Roger_Moore

      K.

    5. Re:Page's Law. by Duncan3 · · Score: 1

      Is there anything in history safe from Google claiming credit for it?

      Pretty soon it will be Google Wheel(tm) and Google Fire(tm)

      --
      - Adam L. Beberg - The Cosm Project - http://www.mithral.com/
    6. Re:Page's Law. by Anonymous Coward · · Score: 0

      I remember Moore for founding Intel, but that's just me.

      Moore's Law is cleverer. It actually says; someone will produce a processor twice the speed every 18-24 months or so. If its not you, your competition will. This then provides a self-fulfilling prediction. Its the target that all microprocessors are benchmarked and sets the market. Its less of a law than a market paradign that everybody works too. If Intel needed to break this they could - whether it would be profitable and at a price consumers will pay is a wholly different matter.

      The argument about software is not true in the same way, across all software.

      Also OS X is a great example of increased speed as it has evolved especially from 10.4.0 to 10.5.6 - not even to talk about 10.6 (snow leopard).

    7. Re:Page's Law. by Anonymous Coward · · Score: 0

      Essentially, both.

      Moore not publish anything as "Moore's Law". It was merely an observation he briefly mentioned in a paper on the future of computing which discussed that several years later people realized "hey, it's still true!" Now it's over 40 years.

      It is only because he co-founded Intel and already was held with a certain prestige that the law is remembered in his name, rather than the names of any of what are probably countless people in the industry who could have easily made the same observation.

    8. Re:Page's Law. by Anonymous Coward · · Score: 0

      Who's Moore?

  15. Code Bloat? Think twice. by Ukab+the+Great · · Score: 1

    We could also consider the possibility that a twice-as-fast computer on a twice-as-fast network pipe produces twice-as-much data which, in order to keep the same perceived speed, must be processed twice-as-quickly by another computer.

    1. Re:Code Bloat? Think twice. by tepples · · Score: 1

      We could also consider the possibility that a twice-as-fast computer on a twice-as-fast network pipe produces twice-as-much data

      But why is it producing twice-as-much data? Is it receiving twice-as-many requests? If so, from whom? Twice-as-many users? Or a single user doing twice-as-many things?

    2. Re:Code Bloat? Think twice. by Anonymous Coward · · Score: 0

      Why not consider the possibility that it could be a combination of one, the other, or both? Clean relatively bloat free code should be relatively easy to optimize for either or both. Especially since less bloat usually means better readability, which amounts to better maintainability (in most cases)....

      Disclaimer: the extent of my programming is simple read from stdin in C and perform math operations, somewhat extensive php dev, limited perl and bash... but I do work with development groups a lot since i work at a software house...

    3. Re:Code Bloat? Think twice. by tepples · · Score: 1
      Anonymous Coward wrote:

      Why not consider the possibility that it could be a combination of one, the other, or both?

      Because the nature of the optimization would vary based on whether each request is heavier to process, or each user is making more requests, or there are more users. I didn't have time to go into a full analysis of all of these hypothetical scenarios; I wanted Ukab the Great to pick out a scenario to discuss.

      Clean relatively bloat free code should be relatively easy to optimize for either or both.

      A quicksort with median partitioning is less "clean" than a gnome sort but more efficient in some cases.

  16. There's constrained, and then there's constrained. by tepples · · Score: 1
    Dwedit, the current maintainer of the PocketNES emulator for Game Boy Advance, wrote:

    Make developers target a slow and memory constrained platform.

    I hope you're not talking about something like the NES. There are some things that just won't fit into 256 KB of ROM and 10 KB of RAM, like a word processing document or the state of the town in a sim game like SimCity or Animal Crossing.

    Then you get stellar performance when it runs on the big machines.

    Only if the big machines use the same CPU and I/O architecture as the small machines. Otherwise, you need to use an emulator that brings a roughly 10:1 CPU penalty (e.g. PocketNES), or more if the CPU has to translate between I/O models (e.g. NES emulators on PCs).

  17. Constant , not most, bang for the buck by davecb · · Score: 1

    Actually, if you're doing test-directed development, you should have a test that tells you if you've met your performance needs or not. Your management wants to know they have a certain amount of bang/$, to meet their performance budget.

    For user-interface stuff, that could be as simple as "3 seconds on average, no more than 5% over 20 seconds", for some number of simulated users on your development machine.

    So build a test framework and measure the first part of the program you write. For example, that might be the front end of an interactive query program. Put in a dummy delay for the back-end database and test performance the first day the code responds to a request. Code and tune to meet your performance targets, and stop tuning as soon as it is fast enough . In this case the tuning will mostly be looking at code-path length with your test framework and a source-code profiler, to get both latency and transfer time down to an appropriate value. Since you have the program available to you, measure the residency times in each major component with the profiler. The slowest component will be the limiting factor, and the limit on its performance will be 1/Dmax, where Dmax = V *S, visit count to the component, times service time for it.

    Once the code is performing, now is a good time to stop and look at resource usage. Find out how much CPU, memory and I/O bandwidth your program uses per transaction, and save that information for sizing later. You will need to ensure when you size the system that you dont introduce an artificial bottleneck. This is where your management will want to know the performance, so they can plan to support an estimated number of users.

    Returning to tuning, next build a test version of the sql. Run it as a script and measure the sql response time. Now you can tune the database queries, and get them fast enough.

    Finally, if your program contains middleware, arrange for it to communicate via sockets, and measure performance at the front end and the database. The difference will be the performance of the middleware. As before, the demand of the slowest component will be the bottleneck, and will hold performance to 1/Dmax. Speeding up other parts of the programs wont help.

    Consider this the performance experts version of test-directed design.

    --dave

    --
    davecb@spamcop.net
    1. Re:Constant , not most, bang for the buck by mzs · · Score: 1

      I wish I worked at more places like that.

  18. 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
  19. Meanwhile Looser's Law *is* broken... by Dystopian+Rebel · · Score: 1

    From the transcript of the speech:

    "you never loose a dream"

    --
    Rich And Stupid is not so bad as Working For Rich And Stupid.
  20. Yes! by JamesP · · Score: 1

    It's simple, just don't use Java

    In a more serious note, my personal opinion is have the developers use and test the programs in slower machines.

    Yes, they can profile the app, etc, but the problem is that it really doesn't create the 'sense of urgency' working in a slow machine does. (Note I'm not saying developers should use slow machines to DEVELOP, but there should be a testing phase in slow machines)

    Also, slower machines produce more obvious profile timings.

    --
    how long until /. fixes commenting on Chrome?
  21. Moore's law by tepples · · Score: 1

    Unlike workstations where(as you say) the value of going from "workstation adequately responsive, 60% load" to "workstation adequately responsive, 30% load" is pretty much zero

    Not always. A notebook computer running at 60% load draws more current than one running at 30% load. But LCD backlights eat a lot of power too, and the licensing policy that Microsoft announced for Windows 7 Starter Edition (CPU less than 15 watts) might encourage CPU engineers to move more logic to the GPU and the chipset.

    If you have thousands of instances, gains of even a few percent mean substantial reductions in the number of servers you need to run.

    Moore's law predicts that transistor density on commodity integrated circuits doubles every 18 months. This means more cores can fit on the same size chip. If your applications are inherently parallel (as servers often are), and your user base doesn't grow faster than that, you can just throw more new hardware at the problem. But you do need to optimize in a couple cases:

    • Your applications become bound by something other than CPU speed and cache capacity, such as main memory bandwidth or persistent storage latency.
    • You plan to increase your servers' load faster than Moore's law, such as if you are promoting your service to a lot of new users or especially if you are adding features. I think adding features is one big source of this slowdown described as Page's Law (formerly called Gates' Law).
    1. Re:Moore's law by BenoitRen · · Score: 1

      you can just throw more new hardware at the problem

      You forgot that this also costs money.

    2. Re:Moore's law by tepples · · Score: 1

      you can just throw more new hardware at the problem

      You forgot that this also costs money.

      It costs money to replace hardware that wears out, such as hard drives and fans. Eventually, it costs more especially in labor to keep fixing a server than to replace the server with a newer, faster server.

    3. Re:Moore's law by BenoitRen · · Score: 1

      Yes. What's your point? I never said you should never replace hardware if it breaks or wears out.

  22. law!?! by iCodemonkey · · Score: 1

    but I don't want to break any laws.

    --
    Deja Moo: The feeling you've heard this bullsh*t before.
  23. 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.

  24. 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.

    1. Re:Adding RAM to an existing device by VGPowerlord · · Score: 1

      Out of curiosity, how much RAM does the DSi have?

      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    2. Re:Adding RAM to an existing device by Anonymous Coward · · Score: 0

      That's more linked to their CPU choice. On the DS, it may have cost a bunch of money(and power consumption) to add more RAM.

      On more modern ARM SoCs (like the OMAP 3530), jumping from 128MB to 256MB would be negligible in cost.

      On a Propellar, adding 512KB might cost you $20, more than the OMAP 3530 RAM upgrade.

    3. Re:Adding RAM to an existing device by tepples · · Score: 1

      Out of curiosity, how much RAM does the DSi have?

      16 MB. But will it reach 10, 50, or 100 million anywhere near as fast as the DS did?

    4. Re:Adding RAM to an existing device by Anonymous Coward · · Score: 0

      Speaking of the NDS browser, it's pretty neat that it runs on only 12MB of RAM.

  25. 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.
  26. 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 Ash-Fox · · Score: 1

      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.

      Actually, those were just incomplete operating systems in my opinion, lacking important things like proper 2d and 3d acceleration, and then releasing it in the next version as it goes on, APIs not properly coded, so it gets rewritten, changed as the versions go on while introducing more crappy stuff.

      To put it simply, they put out a shitty product initially and are now fixing it.

      Steve Jobs talks about how adding something like Quartz 2D extreme (they renamed it to QuartzGL for some reason later on) is the future and then because it's such a shoddy piece of crap, end up disabling it in 10.4 due to the instability and apparently worse performance it brings...

      I would not use Apple as a good example of Page's Law.

      --
      Change is certain; progress is not obligatory.
    2. 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
    3. Re:Ask Apple how they do it. by toddestan · · Score: 1

      You basically start out with a crappy, bloated, unoptimized piece of software that was so terrible only the Apple from the late 90's/early 2000's could have put it out, and then apply the optimizations that should have been in the original release later, so you can gloat about how much faster each release is.

      Note that Microsoft seems to be doing something similar with Vista -> Vista SP1 -> Windows 7 (not sure where Vista SP2 fits in yet), though Vista started out better than the original release of OSX.

  27. We don't want it to be broken, really by realmolo · · Score: 1

    Hardware has advanced to the point that we don't care about performance all that much.

    What is more of a concern is how easy it is to write software, and how easy it is to maintain that software, and how easy it is to port that software to other architectures. Efficiency of code generally means efficient use of a single architecture. That's fine, but for code that has to last a long time (i.e., anything besides games), you want it to be written in a nice, easy-to-change way that can be moved around to different platforms for the next 20 years.

  28. 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.

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

      The point is the game can utilize the computing power of higher-end systems.

      And my point is that in this case, the same optimizations needed to get a game to run acceptably on a constrained system can also be used to increase the visual quality on a less constrained system.

  29. More Code Efficiency=More Elecricity Efficiency by FathomIT · · Score: 1

    I wounder how much energy and money this would save for a server hog like Google. Reminds me of Blackle

    1. Re:More Code Efficiency=More Elecricity Efficiency by Khashishi · · Score: 1

      Black screens don't save energy on backlit LCDs like they do on old CRTs, which are pretty much obsolete these days.

  30. Incentive to run on existing deployed hardware by tepples · · Score: 1

    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.

    Then why are games for PlayStation 2 still coming out years after the launch of the PLAYSTATION 3 console? If the incentive to run on existing deployed hardware were so small, major video game publishers would make their games PS3-exclusive even if the game's design didn't require it.

    1. Re:Incentive to run on existing deployed hardware by fuzzyfuzzyfungus · · Score: 1

      "customers who don't buy because their machines don't meet spec"

      Since consoles move in large, discreet steps, the particular indirect pressure noted above is extremely significant. In the case of the playstation, the PS2 was released ~2000 and the PS3 ~2007. Nothing in between, one or the other and the PS2 has a vastly greater installed base. Because specs are fixed, requirements don't get to drift upward. They either stay still, or jump.

      PCs aren't wholly different, any publisher of "casual games", for instance, would be insane to require more than a GMA950, and they all know it; but requirements do creep up; because the average power of their customers' PCs creeps up.

    2. Re:Incentive to run on existing deployed hardware by Narishma · · Score: 1

      That's easy. The PS3 has an install base of around 25 million units while the PS2 is around 125 million.

      --
      Mada mada dane.
  31. Puh-lease by Anonymous Coward · · Score: 0

    "Page's law"? Not too egotistical is he? I guess by stating the obvious that make it his idea.

  32. Sure it can be broken... just stop upgrading by Anonymous Coward · · Score: 0

    Seriously.... I can count on one hand the can't-live-without software that has changed in the last 10 years.
    After those 6 or so Apps, the rest is just candy.

  33. Replace worn-out boxes with new boxes by tepples · · Score: 1

    My point is that if you're already paying to replace hardware, your cluster's capacity will grow over time as you do so because the new machines will be bigger and faster than the ones they replace. So if your application's performance is already satisfactory, you need to optimize if and only if you expect load to grow faster than the computing power of your cluster.

  34. 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
  35. 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*
    1. Re:KDE4 is ~30% faster than KDE3 by ConceptJunkie · · Score: 1

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

      Perhaps, but until recently it's been 30% less featureful and 30% buggier, and it's still got a long ways to go for the solidity and functionality of 3.5.

      I use it. I like it. But I really wish 3 to 4 hadn't involved such a huge step back for so long. I understand the whys, but that doesn't make it any easier to endure. KDE should have never shipped on any distro until 4.2, which is deserving of "dot oh" status: pretty complete, maybe a little warty, but ready to be used.

      I'm excited for the improvements on the horizon. KDE is really cool despite all these shortcomings.

      --
      You are in a maze of twisty little passages, all alike.
    2. Re:KDE4 is ~30% faster than KDE3 by kojot350 · · Score: 1

      Yes, I mostly agree, they should IMHO do it like: 4.0 pre-alpha devel preview, 4.1 alpha, 4.2 beta, 4.3 RC. I don't miss any feature of the KDE3, and since 4.2 it's less and less buggy, but remember it's community effort, so the more you give the more you get :) I e.g. always report bugs and try to patch them when I can. Anyway I think this was bold and necessary move to rewrite the codebase and we all will see effects soon in 4.3 and 4.4, cause now KDE4 is beginning to show it's potential, after all the major deep-in-the-libraries work has been done :D btw I use 4.3beta2 and it's frakkin' great ;)

      --
      [ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo *Click*
    3. Re:KDE4 is ~30% faster than KDE3 by Anonymous Coward · · Score: 0

      I am still waiting on non-useless printing. If it can't do booklet printing it's close to useless to me.
      Unfortunately KDE 3.x AFAIK is the only one who made it easy (even if you did not have a duplex-capable printer).

    4. Re:KDE4 is ~30% faster than KDE3 by FlyingBishop · · Score: 1

      On how many cores? On my single core KDE4.2 was far and away more buggy, slow, and memory-bloated than KDE 3.5 - which is why I uninstalled it entirely (I used to run a mix of Gnome and KDE apps, so this is not a huge switch.)

      I do miss Amarok, but there were too many feature regressions and general slowness.

    5. Re:KDE4 is ~30% faster than KDE3 by kojot350 · · Score: 1

      On core 2 duo 1.7, but it's not the issue here probably. Some graphic cards perform really bad on linux, there were versions of graphics drivers that was buggy and slow, I've had issues with my nvidia chipset cause nvidia don't gave a frakk 'bout quality of their drivers for linux... So yes there was significant (and probably still are on the newer chips) performance issues but they have nothing to do with KDE nor Qt itself. And as I previously said there was significant performance boost from Qt4 itself (you can check troll's benchmarks if you want), so it should be noticeable. Also I've noticed that Kubuntu tends to have more issues (at least 4.2 had) than others, I recommend openSUSE, it have great support for KDE (traditionally).

      --
      [ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo *Click*
  36. Moar users! Moar battery life! by tepples · · Score: 1

    Hardware has advanced to the point that we don't care about performance all that much.

    That might be true of software intended to run on desktop PCs. But for servers, you want efficiency so you can handle more requests from more users. And for software intended to be run on small, cheap, battery-powered devices, you want efficiency so you can underclock the CPU and run longer on a charge. You mentioned games, but a lot of applications for handheld and subnotebook computers aren't games.

  37. 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

  38. What Intel Giveth, Microsoft Taketh Away by Anonymous Coward · · Score: 0

    Is a another version.

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

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

    -- Ken Batcher

  40. 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.

  41. Discrete/discreet by Anonymous Coward · · Score: 0

    "Separate and distinct", not "careful and circumspect".

  42. 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.)

  43. 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.

  44. g3 & tiger by airdrummer · · Score: 1

    i run tiger on clamshell ibooks (300-466mHz) w/320-576mB and it's usable, if not always pleasant...otoh, 10.4 on a 400mHz g4 powermac w/agp graphics & 2gB is barely tolerable...

    but it's getting harder to keep apps updated: vlc's latest 1.0rc2 sez

                    Support for Mac OS X 10.4.x was dropped due to its technical limitations :-(

  45. Yep by ForAllTheFish · · Score: 0

    And the easiest way to do it is make Visual Studio (or your compiler and IDE of choice) faster. If Visual Studio is fast, developers won't feel the need to upgrade their machines, and so do not need to perpetuate this cycle.

    1. Re:Yep by SL+Baur · · Score: 1

      And the easiest way to do it is make Visual Studio (or your compiler and IDE of choice) faster. If Visual Studio is fast, developers won't feel the need to upgrade their machines, and so do not need to perpetuate this cycle.

      Pass the bong over here brother Slashdotter. I want some of whatever it is you're smoking.

      Development platform != Target platform (though it is better practice to keep the two in sync, it's not always possible)

    2. Re:Yep by ForAllTheFish · · Score: 0

      Look, I agree 100% that Development platform != Target platform. It's just a joke given the amount of technology we have that a single c++ source file witha moderate number of header files included takes 2 seconds to compile, so that a few hundred thousand lines of source code takes more than 3 hours to compile, and updating intellisense drowns one of the processors on the machine for a full 5 minutes after a rebuild all. It's no wonder we need 4 GB of RAM and 2 processors and 200GB hard drives on all of our dev machines, which is ridiculous overkill for running our CRM application, which still installs from a single CD and has a 15MB or so footprint in RAM. P.S. it's good BC bud.

  46. Re:Constant, not most, bang for the buck by davecb · · Score: 1

    I'm actually surprised how many folks are doing scrum and test-directed development. I did a year with a group in a relatively boring part of the industry (services) and found that they were heavily into scrum/sprint, java, perl and xml.

    They were quite open to adding a trivial performance test to the regression-test suite, just to be sure they didn't accidentally slow it down.

    --dave

    --
    davecb@spamcop.net
  47. Sure it can by Tired+and+Emotional · · Score: 1
    But you have to care about it. You need to test it but that is not enough.

    The problem is performance creep. Its easy to find big slowdowns with regression analysis, but you get perhaps as much a 5% variations in timings just depending on the phase of the moon. So any slowdown less than, say, 5% is not discernable from noise. As a result your performance can deteriorate by a few percent per checkin. Over a year that can mount up.

    So you have to combat this by actually tuning the software every so often - say once per release - to recover the creep. And, of course, after you do this a couple of times, it gets harder to knock hot spots on the head and you have to do it early in the release cycle as you have to start rearchitecting to actually make a difference.

    --
    Squirrel!
  48. Already broken by Co0Ps · · Score: 1

    It's already broken. Microsofts software gets twice as slow every 9 months.

  49. Perfect Example of Page's law by Khyber · · Score: 1

    Camfrog. When it was version 3.2, it was just a 4 meg download. Now it's version 5.3, it's nearly 11 megs, and there hasn't been much of any improvement at all. In fact, it runs WORSE, crashes mroe often, and the only thing they did was add the ability to put stupid eyes over your face and a few shiny UI improvements.

    Page's Law will cease to be a law when A. Software/code patents are invalidated and B. programmers, thus free from the nonsense of software/code patents, code as efficiently as possible.

    After all, some random programmers can make a fully 3D game in 64KB of code. Why can't 'professional' programmers do the same thing for their video chat programs, huh?

    --
    Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
  50. Doesn't anyone teach benchmarking at uni? by C0801+p475+ur+81115 · · Score: 1

    I'm constantly explaining to junior devs how to use indexes and other performance features, but the basics of measure, test, measure seem to be lost on all of them. Where is the scientific method in CS these days?

  51. Agreed, 110% (OO has the downsides you noted) by Anonymous Coward · · Score: 0

    "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" - by Z00L00K (682162) on Monday June 01, @09:24AM (#28166975) Homepage

    True! Because, iirc? For every object you instance, it's an added 472 bytes of memory used by said object, @ least in Win32 PE environs (such as Microsoft & Borland compilers (I prefer the latter, Delphi being my fav. even to this very day).

    NOW - Though that might not seem like a lot, you have to consider that the gui alone is probably composed of N objects, & whatever classes you make full-blown objects will be adding additional overheads, per each one created.

    (Plus, Hey - I don't need an object-oriented design to do a "Hello World" level (meaning simpler/smaller) program: Procedural programming does the job nicely!)

    APK

  52. PAge's law? by geekoid · · Score: 1

    What a pathetic attempt to get known like Moore.

    It's not true.
    In effect they are saying no software gets faster when the number of transistors within a specific area doubles.
    Stupid.

    The other side is "When adding more features software has more to do!" No. Shit.

    How much work is being down? THAT'S the only relevant metric.

    Google has clearly peaked.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  53. Godfather's Law by GodfatherofSoul · · Score: 1

    def'n: Ascribe your name to some ambiguous phenomenon with barely enough repeated occurrence to be defined and immortalize yourself in the annals of internet history. If your code is getting 2x as slow every 18 months, you need to pursue a new career.

    --
    I swear to God...I swear to God! That is NOT how you treat your human!
  54. Does it even apply outside of Google? by Anonymous Coward · · Score: 0

    I honestly dont think so...

    Unless you have monkeys mindlessly adding features until the HW grinds to a halt. Then they discover backspace button and cycle repeats.

  55. 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.

  56. "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.

    1. Re:"cache" by Blakey+Rat · · Score: 1

      Nope. Not the same thing. That's precaching.

      What the fuck ever. Sorry for not being a pedantic asshole, like everybody else on this site.

      In any case, pre-caching is:
      1) A subset of caching, so the usage is still correct
      2) Not in my spell-checker

      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.

      Ok; so you're saying the Linux system was rejected because it sucked ass. I don't see what that has anything to do with Vista.

      Vista determines what to cache (I'm purposefully not typing "precache" just to piss you off, BTW) based on your computer usage. If there's anything to complain about with Vista's implementation, it's that you get very little benefit until you've used the computer for a few weeks, since Vista doesn't know what applications you use often until you ... often use them.

      Since most people who hate Vista haven't actually used it-- oh they may have run it for a few minutes, maybe even a day or two, but they haven't actually used it-- people aren't going to see the benefit.

      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.

      Why?

      Now given, there's not a lot of benefit for either of those apps, since I'm pretty sure Vista won't cache video game art files or mail databases, but let's assume it did, and doing so could shorten the launch time by 10 seconds.

      Why the hell *don't* you want your system shortening the launch time of your most commonly-use apps? Is it just because you're a masochist?

      More likely, it's because you simply do not understand the point I made originally (and then pointed out that most people don't understand it): the cache is not wasted RAM because it takes no time to flush, when that RAM is needed by someone else. No time. Zero seconds.

      Your computer could fill up your entire RAM with nothing but Night Elf animation files, and boom, suddenly WOW launches much quicker. But, oh no, now I want to launch Mail.app! Ok, the system flushes all the stripper pole motion captures (which, I remind you, takes ZERO TIME) and starts loading Mail.app. That's the worst case scenario. And what's the end result? Mail.app takes the same amount of time to load that it would if the system did no caching at all. You've lost nothing; and if you had run WOW, you'd have saved a lot of time.

      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 you only use it once a week or so, it probably wouldn't ever get cached. But even if it did, what possibly "harm" could that cause to the rest of your system? Remember, the cache can be flushed in ZERO TIME. That's the point people don't get.

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

      I don't have any users screaming out in pain.

      Whatever. Linux doesn't do it because it causes performance issues.

      It caused "performance issues" (vague, unspecified ones) because their implementation sucked. That says nothing about Vista's implementation. Hell, your example was Linux caching a program that you never ran! How the fuck did it determine what to cache? Random number generator?

      Look, Windows 95 had protected memory (in theory at least) and programs crashed