I'm on a team building a .NET application in C#, and we run into this all the time. There is a profiler, but nobody bothers to use it because 1) it's a bit of a bother, and 2) the output is confusing. What I do is start it under the IDE, and while it is being piggishly slow, I just pause it and ask it what it is doing and why, by examining the call stack.
Since it is being slower than it's going to be, it is because it is doing some things that will be removed or done differently. These things generally consist of function calls requesting things like: internationalizing strings that don't need to be internationalized, loading things multiple times, initializing data structures that are there just for completeness and are going to be replaced later, unzipping and zipping things more than necessary. All of these take the form of mid-stack function/method calls and when they show up on multiple stack samples are simply crying out to be attended to.
It is good to try to foresee these problems and not put them in, but you can count on such problems creeping in, despite best intentions. The method of stack sampling (stackshots) is effective at finding them.