Страницы

Поиск по вопросам

пятница, 24 января 2020 г.

Влияет ли блок try на производительность кода в С++, если исключений не возникает?

#cpp #исключения #производительность #try_catch


Прошу прощения если я задаю глупый вопрос, но мне нужно знать точно. Если я пишу
подобный код на С++:

int main() try {
.....
}
catch (const std::bad_alloc& e) {
    ...
}
...
catch (...) {
    cout << "Was throw exception" << endl;
    system("pause");
}


Будет ли скомпилированный в блоке try код отличным от такого же кода без блока try?
Может ли блок try оказывать какое либо влияние на производительность помимо ситуаций
когда происходят исключения? 
    


Ответы

Ответ 1



Откровенно говоря, не очень понятно, как именно провести эксперимент... Так что это не более чем иллюстрация, по которой трудно делать выводы. На такой функции-пустышке на VC++ 2017 попробовал - int main(int argc, const char * argv[]) { { muTimer mt; for(int i = 0; i < 1000000; ++i) { try { f(i); } catch(...) {} } cout << mt.stop().duration() << endl; } { muTimer mt; for(int i = 0; i < 1000000; ++i) { f(i); } cout << mt.stop().duration() << endl; } } int total; void f(int i) { total += i; } Получилось примерно 4 миллисекунды на 0.6. Но, думаю, что при серьезных функциях соотношение будет куда ближе к 1:1 :)

Комментариев нет:

Отправить комментарий