Есть следующий код (вычисление числа Фибоначчи неэффективным
способом, и с помощью исключений):
#include <iostream>
void fib(int k)
{
if (k<=1) throw int(k);
try {
fib(k-1);
}
catch(int a) {
try {
fib(k-2);
}
catch(int b) {
throw a+b;
}
}
}
int main() {
try {
fib(30);
}
catch(int x) {
std::cout<<x<<std::endl;
}
}
компилируем, выполняем, мерим время работы:
$ g++ -o fib fib.cpp
$ time -p ./fib
832040
real 22.89
user 22.87
sys 0.00
теперь то же проделываем, используя mingw и wine:
$ i586-mingw32msvc-g++ -o fib.exe fib.cpp
$ time -p wine ./fib.exe
832040
real 2.67
user 2.62
sys 0.01
Чем же уважаемые посетители ЛОРа объяснят почти 9-е кратное
преимущество в скорости варианта, скомпиленного под Windows?
Ответ на:
комментарий
от mv

Ответ на:
комментарий
от Adjkru


Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Почему ifstream не читает нормальные значения из sysfs? (2020)
- Форум [бенчмарк] С++ медленне С в 5 раз при уже при 0.1% кидаемых исключений [ЧЯДНТ ?] (2009)
- Форум Порт не освобождается после закрытия приложения (2017)
- Форум boost::python Как получить указатель на python функцию и вызвать ее из C++ кода? (2017)
- Форум boost::thread VS openMP!!! Кто кого??? (2009)
- Форум Обработка исключений (2008)
- Форум обработка исключений. как? (2007)
- Форум Python: обработка исключений (2005)
- Форум Haskell и обработка исключений. (2013)
- Форум Обработка исключений в ядре (2015)