Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

>disable optimisations in parts of the code because they were found to cause bugs elsewhere.

Well that is exactly what I meant. Compiler optimizations by themselves do not cause bugs - they reveal bugs. They are specfically designed to be sematically equivalent[1]. Without the compiler optimizations the bugs may not manifest themselves, or only manifest themselves in particular conditions that may not be spotted by QA - but the bugged/unsafe code is still present. Any functional discrepancy between compiler-optimized and non-optimized code should be cause for concern.

>Creating a rich interactive world the size of Skyrim is a considerable technical achievement,

I wouldnt say that the size is a technical acheivement - the credit would mostly go to the artists there - and they did an amazing job. Although it would cerainly not be possible without a decent quality engine.

Don't get me wrong. I really like skyrim, and have spent a lot of time with it. But I simply get the feeling that performance receives less and less attention in the modern products.

[1]http://en.wikipedia.org/wiki/Compiler_optimization



Compiler optimizations by themselves do not cause bugs - they reveal bugs.

This is incorrect. Optimizations do often reveal bugs rather than causing them, but turning on optimizations can also cause bugs in itself. See for example:

http://gcc.gnu.org/bugzilla/buglist.cgi?short_desc=optimizat...


These are due to bugs in the compiler, not inherent property of optimizations. It's quire rare for anyone to hit a optimizer bug and when it happens one can always selectively disable the buggy optimization method. Disabling all optimizations kinda overdoes it.


Compiler optimisations aren't always designed to be semantically equivalent - for instance options which control floating point behaviour, like -ffast-math in gcc.

That aside, sometimes compilers themselves have bugs as others have pointed out (I found one once involving a combination of python, boost, exceptions and the Intel C++ compiler - which only happened at -O3, not at -O2). Or you might not be able to use certain settings because it would be incompatible with some thirdparty library that you don't have the source to.

Re: the size, the technical achievement is in managing all the content, how you interact with it and how it interacts with itself, etc. It's doing quite a lot of I/O to pull in the right assets at the right time - not to mention some computational geometry to figure out which are the right assets; running lots of AI for the creatures & NPCs; balancing memory usage between RAM & VRAM; simulating a night & day cycle, with weather too; rendering it all in (usually!) less than 30 milliseconds; and more besides. I certainly don't mean to play down the achievement of the artists involved, but don't underestimate the technical side either!


> Compiler optimizations by themselves do not cause bugs - they reveal bugs.

Incorrect, and naive in the extreme.

> They are specfically designed to be sematically equivalent

Unconvincing. Machines are specifically designed to not blow up, and yet they do.

> But I simply get the feeling that performance receives less and less attention in the modern products.

I agree, but often we gain something in terms of the scope of games that a team can create. If you want to make a movie, you probably shouldn't start by designing the camera.


>Compiler optimizations by themselves do not cause bugs - they reveal bugs. They are specfically designed to be sematically equivalent.

> Any functional discrepancy between compiler-optimized and non-optimized code should be cause for concern.

I agree that functional discrepancies are a cause for concern, but compilers have bugs too (and games programmers tend to push the limits).


> Well that is exactly what I meant. Compiler optimizations by themselves do not cause bugs - they reveal bugs.

Compilers are programs too. They have bugs. In an ideal world, they do not generate broken code. In the real world, they do.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: