You cant necessarily have the best of both worlds. Code that performs very well depends on (in priority order):
1) Good algorithm choices.
2) Understanding the hardware.
3) Being as close to the metal as possible in the code that executes
the most frequently.
My general perspective for a step-by-step approach to any problem:
1) Research the best algorithm for the problem. Dont write code until you think youve got something that will work.
2) Write code that just works. It doesnt have to perform well, just work.
3) Take a code profiler to the code if it needs to go faster. Dont make human decisions for a computer - code profilers work better. The good ones cost money.
4) If something can be optimized, itll be painfully obvious as it bubbles to the top of the list of things the code profiler noticed. Optimize the few lines of code that show up (or come up with a new algorithm) and usually the application will speed up significantly.
Unfortunately, the faster code generally processes data, the uglier it tends to get. With ugly code comes greater responsibility to comment the code accordingly.
Now, as to which language to use, if you are talking about real performance, then most compiled languages will tend to work well. C and C+ are good choices, IMO, when you need pure performance. You havent really specified what you want to do, but, generally-speaking, a good algorithmic design will go far in any language.