Q1. What are best practices for a writing a code that does not consume CPU but still achieve a great performance? The question is very generic. What I seek over here is to list down different practices used for different environments? debugging tips besides process-monitor/task manager
EDIT: I am not speaking of IO bound processes. I am speaking of CPU bound process. But, here I do not want my process to keep on hogging CPU. If i have a 4 core machines and if i run four simple loops within a process, the CPU consumption shoots up to 400% till the application/process is running.
I am seeking here some experience on the topic which everyone would have faced some time or other. e.g. I debugged once an application was hogging CPU on Windows as it was looping continuously to search for a non-existent file.
How can I write my program in a way that two different CPU bound applications run smoothly (give a good response)?
UPDATE: Suggestions:
Write good clean code, then Profile your application and then optimize. (Thanks ted for the tip)
It is easier to rewrite/redesign/refactor code than profiling and fixing it.
Use a profiler to debug your application
Don't use spinlocks for threads with long waits
Algorithm choice
These suggestions go a long way for the beginner to understand the concepts.