Original Post
a little history...
in the early days of games, every cycle was squeezed out of the CPU. of course, we didn''t have to share resources then.
when multitasking operating systems came out, things got a little inefficient, but processors had sped up so the overheads were relatively small.
As the state of technology improves, so does the complexity (windows has peversly got exponentially more complex, but arguably passed it''s peak)
drivers and APIs standardise this so the code volume overhead per program is smaller
of course there''s an extra layer of third-party code slowing things down, but computers had sped up so the net amount of resources to our engines still increased with time
now the hardware is approaching a physical limit. frequency obstacles (heat etc) spawned "intelligent" instruction execution long ago, but soon we will have to accept that chips aren''t going to get much faster without drastic changes in technology (a circuit track can only be made so many atoms thin)
in the medium term, multiprocessor systems will become more common for those after the extra speed. but this will mean paying for 2 processors
over the years we have allowed ourselves a little slack, and the wasted resources have grown. why the hell is there no standard direct-disk-access API? why is several percent of 256Mb RAM unavailable as soon as I boot? and whose dumb idea was it to implement a "high speed" games API with COM? why do we have to share CPU cycles with a kernel which by all rights should be idle until a hardware interrupt stimulates a message? why do compilers build a stack frame by default instead of passing arguments in registers, and popping arguments as needed to increase the number of instructions in the pipeline? Why the hell do we put up with code bloat? why oh why do we argue about wether assembly is still useful when you can spend 10 minutes hand-coding a 300% faster blit?
when the pressure re-builds to remove the bottlenecks, will we go at it with the ruthless cycle-sucking in the "Golden Era" (cough) or will we be too entrenched in the glory of polymorphism, VFLTs (spit) and resource sacrafice in the name of "fairness"? should we once-and-for-all standardise the driver interfaces so programs can have honest-to-goodness direct access to hardware in the same way DirectX does? should someone write a games OS that supports every important Win32 API function and runs normal windows programs but boots in several seconds and allows an application to hog the system?
in the meantime, to scrape up a few extra cycles, i''ll just bump all my processes'' threads up to the highest priority...
********
A Problem Worthy of Attack
Proves It''s Worth by Fighting Back