|
"Premature optimization is the root of all evil", that said Donald Knuth, a key figure in computer science. So, when are the circumstances mature enough to go for full optimizations? The answer is, at first glance, simple: it is when no algorithmic design changes can happen, it is when we are essentially finished with our development. Making conceptual changes after full brute-force optimizations have been deployed, means that the developer should either revert to older - unoptimized - code or make them along with reapplying the optimizations already introduced.
The former will probably mean losing work and features, the latter is both difficult and dangerous, stability-wise. Adding new features may be quite challenging as well. I will go one step further; looking the other way around, we could loosely say that deploying full program optimizations may mean the end of product development! I came across on a renderer's update where it is mentioned that there is a significant boost compared to its first release. That's indeed very nice, we can all agree that (render) time is precious.
Unfortunately, brute-force optimizations may have a direct impact on development speed. It is actually something that could lead easily to a dead end. How easy is it to make now conceptual improvements? How easy is it to add new features?
From Thea point of view, we are always making the optimizations that cannot harm code readability, software design and maintenance. We ensure this way, that conceptual changes can be done easily right now and in the future. Instead, as our first priority, we always seek for conceptual optimizations that lead to sophisticated and superior algorithmic designs. That is why, for example, Thea's unbiased core is superior in many scenes with difficult indirect lighting; brute force optimizations of 20%-50% boost are just not enough in these cases! The concept itself has to change. And this is our philosophy behind Thea development, to research and develop the most robust and superior rendering techniques.
|