A few pieces of advice:
- Sort your profiles by wall clock time if you want to get something useful from them.
- Class::DBI will hurt you a lot on this test. It's at least 5 times slower than straight DBI code using prepare_cached, bind_columns and bind parameters.
- A straight mod_perl handler would be faster than Catalyst and is more equivalent to a vanilla servlet environment. You'd have to make sure you set the TT part up right though, so don't try this if you aren't familiar with TT's caching.
- DBD::Oracle has a parameter for tuning how many rows to fetch at once. It makes a big difference. Crank it up high.
- Make sure you have MaxClients set at something that prevents your server from using up all the memory and going into swap. That would kill your performance.
Finally, don't feel bad if you don't win. Java is fast these days when used in a lightweight environment like Tomcat.