> It's better to get something to work first and then optimize performance later than the other way around.
I see it repeated a lot without any justification. And I observe that in practice a reverse statement is true.
If you make something work first without looking at its performance from the very first phase of development then you will soon find yourself in a place where the only way to improve performance is doing a full rewrite.
It is way easier to add more features to a program that has good performance-oriented design than to improve performance of a program that has accumulated thousands of features. And particularly programs like web browsers, compilers and database engines don't have mythical "95% of CPU power is taken by 5% of code" profile. Their profiles are flat, and when you improve perf by 5% you're already blogging about it.
I see it repeated a lot without any justification. And I observe that in practice a reverse statement is true.
If you make something work first without looking at its performance from the very first phase of development then you will soon find yourself in a place where the only way to improve performance is doing a full rewrite.
It is way easier to add more features to a program that has good performance-oriented design than to improve performance of a program that has accumulated thousands of features. And particularly programs like web browsers, compilers and database engines don't have mythical "95% of CPU power is taken by 5% of code" profile. Their profiles are flat, and when you improve perf by 5% you're already blogging about it.