[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] pygame performance limits



On Nov 23, 2011, at 10:35 AM, Nick Arnoeyts wrote:
> Yeah, I'm probably worrying prematurely.
> I'm very easily influenced by FUD and there are a lot of messages floating around that Python (and Ruby) are too slow for making games.

Since I started programming thirty years ago, and probably for the thirty years before that, people have ALWAYS complained that "high level" languages are TOO SLOW and USE TOO MUCH MEMORY.

Note that the definition of "high level" has changed over the years, but suffice it to say, pretty much every single programming language has been subjected to this complaint, from Python to Lisp, even FORTRAN.

The exception to the rule: C, because it was originally designed to be a very thin layer on top of assembler. (C actually does add code, and slow down your program, to do "fancy" things like make array references work like you think they do.)

There's also this false economy -- if you write your code in fewer characters, it'll run faster -- which eventually led to the "obfuscated C" contest. This is entirely false -- unless your compiler is absolute crap, it will optimize your programs just the same, whether they are 10 lines or 1. 

Indeed, if you spend a lot of time reducing your code to the bare minimum, it is more likely you will write incorrect code. 

This is so prevalent that Kernighan and Plauger, who were some of the first people to work on Unix and C, wrote a book called "The Elements of Programming Style," where they repeatedly hammered the idea that "clever" code is a terrible idea. 

	======> Knuth later said, "Premature Optimization is the root of all evil." <======

To a certain extent, C++ also is not regarded as "big" or "slow," but that's ONLY IF you give up the "good stuff" that makes it powerful: you can still have object-oriented programming, but not certain powerful features of inheritance! So in reality, for most code, C++ is not much faster.

The simple fact is this: For most high-level languages, you sacrifice some percentage of your CPU and your memory space, and in return, YOU SHIP COMPLETE PROGRAMS SOONER. You can find and fix bugs SOONER, and add new features (because your users get to mess around and figure out what the REALLY want) SOONER.

Making user wait while you screw around with your "clever" optimizations, then deal with the bugs those introduced, is silly, especially because modern computers are, actually, THOUSANDS of times faster than those of even 10 years ago. And users don't care if your program takes 250 KB or 1MB, because you have have many times that amount of images and sounds.

Now, of course, when you have a super-high-level language, like PyGame, and it's running in an interpreted language like Python, you will run out of power much sooner than you would in a language like C, especially on a "phone" computer.

This, however, is no reason to stop using PyGame -- it's a reason to improve PyGame. Improvements require a lot of technical knowledge, skill, and effort, but they benefit MANY.