Вот и код:
void performanceTest(long accCount, long connectionsCount, long quantCount)
{
objT& obj = GetObj(); // синглтон
long tBegin = my::get_tick_count();
for (long acc = 0;acc != accCount;++acc)
for (long cnn = 0;cnn != connectionsCount;++cnn)
{
long cnnN = acc*connectionsCount + cnn;
obj.func(cnnN,acc,cnn+acc,0,false);
for (long qnt = 0;qnt != quantCount;++qnt)
obj.func(cnnN,acc,qnt+cnn,0,false);
}
long tEnd = my::get_tick_count();
PrintMessage(
boost::str(boost::format("Performance test: Performance is %1% secs per %2% connections, %3% accounts and %4% AddNewQuant calls")
% (((double)(tEnd-tBegin))/1000)
% connectionsCount
% accCount
% quantCount));
PrintMessage(_T("Performance test: done."));
}
Развернуть конечно можно всё, что угодно тем более эту штуку, просто я ожидал, что как мне оптимизатор на оптимизирует, а тут раз мокрой тряпкой по морде. Кстати повторить, в мелких проектах, мне такое же резкое падение скорости не удалось, да и после, завершения разработки функции obj.func, странная оптимизация шаблона стала играть очень не значительную роль.
т.е. снижение скорости составило около 1-го процента
правда я не смотрел, может оптимизатор, уже, как-то по другому формирует код.
поробую напишу что получилось