Have you done anything specificly for SharePoint performance optimization?
Object cache
In SharePoint you should adjust the object and output cache. During stress load your \SharePoint Publishing Cache\Cache hit ratio should preferably be above 90%
For object cache default is 100 mb. Adjust it up in 100 mb increments while measuring hit ratio and at the same time measure \SharePoint Publishing Cache\object discard rate is low and that response time for users isnt raising (\ASP.NET Apps v2.0.50727()\Request Execution Time and \ASP.NET Apps v2.0.50727()\Requests/Sec).
Output cache
If you are having both anonyous users and user sessions this requires different cache profiles. Some of the OOB cache profiles are not very effective. Use VaryByCustom(rights) or roll your own handler and set it up per Layout Page.
More on custom handlers.
Also consider enabling the BLOB cache. Its not perfect by any standards, and it has given me alot of grief across WFE with corrupted files, but when it works it will definately speed up your site. A thing to look out for here are to set the MaxAge property on the output cache element to avoid unneccessary traffic between client and server (304's).
<BlobCache location="C:\blobCache" path="\.(gif|jpg|png|css|js)$" maxSize="10" max-age="86400" enabled="True"/>
More info here.
More info on caching.
If you got loads of custom code make sure your developers cache expensive operations or the HTML output of your web parts using HttpRuntime cache and make sure they handle cache insertion in a single threaded fashion (lock(myObject)) to avoid redundant cache entries.
In general check out the foot-print of your page. Are HTML optimized, are images and scripts optimized? Consider if some of the content on a page could be loaded asyncronously using AJAX/jQuery.
Hope this is what you needed, else feel free to ask.