Hi Andrei,
We have seen a few posts on the forum regarding the slow performance of the category pages and we have had quite a few clients complain about this after an upgrade to nopCommerce 3.0.
We have traced the problem and believe it is quite a bottle neck.
The PrepareProductOverviewModels method call this method twice for every product which is added to the model:
Nop.Services.Directory.CurrencyService.ConvertFromPrimaryStoreCurrency and it calls
Nop.Services.Directory.CurrencyService.GetCurrencyById each time, with the same id but not caching the results. Every call the GetCurrencyById causes the execution of the costly EF method DetectChanges.
http://blog.oneunicorn.com/2012/03/10/secrets-of-detectchanges-part-1-what-does-detectchanges-do/
For a category page with 12 products showing at the same time the total execution time of the GetCurrencyById is roughly 4 secs and the more products the slower the performance.
This might not be the only bottleneck but we think it is quite a substantial one and we think that it needs to be fixed in the current release if this is possible?
I hope this is useful!