Страницы

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

понедельник, 18 марта 2019 г.

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

Прошу прощения если я задаю глупый вопрос, но мне нужно знать точно. Если я пишу подобный код на С++:
int main() try { ..... } catch (const std::bad_alloc& e) { ... } ... catch (...) { cout << "Was throw exception" << endl; system("pause"); }
Будет ли скомпилированный в блоке try код отличным от такого же кода без блока try? Может ли блок try оказывать какое либо влияние на производительность помимо ситуаций когда происходят исключения?


Ответ

Откровенно говоря, не очень понятно, как именно провести эксперимент... Так что это не более чем иллюстрация, по которой трудно делать выводы.
На такой функции-пустышке на 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 :)

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

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