Sometimes working with a good profiler gives you very valuable insights into performance bottlenecks. Of course, there is a convention of "don't start profiling until your code is production quality", but there are few steps that you may take to spare yourself a lot of trouble.
Let's take two examples that are given in any AOP language, logging and context passing.
As this blog shows, almost every imaginable field of the programming has been covered with open source Java projects, all vying for the same #1 spot. It may seem at first that this can only be a good thing, competition driving the creators forward to create better and faster libraries. However, not all is fair in this kingdom.