Тоже решил проверить компиляторы, вот чего получилось.
Сначала linux.
$ cat 1Dint.c
#include<stdio.h>
#include<math.h>
#define eps 1e-9
double
square (double x)
{
return x * x;
};
double
integrate (double a, double b, double (*integrand) (double x))
{
if (fabs (b - a) < eps)
{
return integrand ((a + b) / 2.) * (b - a);
}
else
{
return (integrate (a, (a + b) / 2., integrand) +
integrate ((a + b) / 2., b, integrand));
};
}
int
main (void)
{
printf ("%18.15f\n", integrate (0., 1., square));
return 0;
}
$ gcc -v
Используются внутренние спецификации.
Целевая архитектура: i686-pc-linux-gnu
Параметры конфигурации: /var/tmp/portage/sys-devel/gcc-4.1.2/work/gcc-4.1.2/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.1.2 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-libunwind-exceptions --disable-multilib --disable-libmudflap --disable-libssp --disable-libgcj --enable-languages=c,c++ --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
Модель многопотоковости: posix
gcc версия 4.1.2 (Gentoo 4.1.2)
$ gcc -O2 1Dint.c -o 1DintO2
$ time ./1DintO2
0.333333333333333
real 0m42.302s
user 0m39.514s
sys 0m0.280s
$ gcc -O3 1Dint.c -o 1DintO3
$ time ./1DintO3
0.333333333333333
real 0m28.239s
user 0m27.362s
sys 0m0.163s
$ gcc-4.2.0 -v
Используются внутренние спецификации.
Целевая архитектура: i686-pc-linux-gnu
Параметры конфигурации: /var/tmp/portage/sys-devel/gcc-4.2.0/work/gcc-4.2.0/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.2.0 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.2.0/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.2.0 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.2.0/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.2.0/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.2.0/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-libunwind-exceptions --disable-multilib --enable-libmudflap --disable-libssp --disable-libgcj --with-arch=i686 --enable-languages=c,c++ --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
Модель многопотоковости: posix
gcc версия 4.2.0 (Gentoo 4.2.0 p1.4)
$ time ./1DintO2
0.333333333333333
real 0m36.404s
user 0m34.244s
sys 0m0.253s
$ gcc-4.2.0 -O3 1Dint.c -o 1DintO3
$ time ./1DintO3
0.333333333333333
real 0m27.097s
user 0m25.772s
sys 0m0.153s
Далее, гружусь в непатрикоугодную альтернативную ОС, и делаю там вот что:
> cl
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
usage: cl [ option... ] filename... [ /link linkoption... ]
(это компилер от MSVS 2005 SP1)
>cl /O2 1Dint.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
1Dint.c
Microsoft (R) Incremental Linker Version 8.00.50727.762
Copyright (C) Microsoft Corporation. All rights reserved.
/out:1Dint.exe
1Dint.obj
>z:\Cygwin\bin\time.exe 1Dint.exe
0.333333333333333
0.00user 0.01system 1:12.74elapsed 0%CPU (0avgtext+0avgdata 109568maxresident)k
0inputs+0outputs (433major+0minor)pagefaults 0swaps
1Dint.exe больше минуты грузил процессор где-то на 98%.
На самом деле фиг знает как правильно измерить время под виндой, и какие еще флаги можно скормить cl (может подскажет кто?)
Еще, для колекции:
$ gcc -v
Reading specs from /usr/lib/gcc/i686-pc-cygwin/3.4.4/specs
Configured with: /usr/build/package/orig/test.respin/gcc-3.4.4-3/configure --verbose --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-languages=c,ada,c++,d,f77,pascal,java,objc --enable-nls --without-included-gettext --enable-version-specific-runtime-libs --without-x --enable-libgcj --disable-java-awt --with-system-zlib --enable-interpreter --disable-libgcj-debug --enable-threads=posix --enable-java-gc=boehm --disable-win32-registry --enable-sjlj-exceptions --enable-hash-synchronization --enable-libstdcxx-debug
Thread model: posix
gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
$ gcc -O2 -o 1DintO2.exe 1Dint.c
$ time ./1DintO2.exe
0.333333333333333
real 0m42.992s
user 0m41.140s
sys 0m0.062s
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от Deleted
Ответ на:
комментарий
от kss
Ответ на:
комментарий
от Deleted
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Не компилится ничего :( (2007)
- Форум gcc 4.8.5 на Centos 7 и Gentoo выдаёт разный результат. (2017)
- Форум [кросс-компиляция] ‘thread’ in namespace ‘std’ does not name a type (2011)
- Форум зависает gcc ! :))) (2005)
- Форум std::copy_n не перемещает итератор на следующий символ за последним скопированным. (2021)
- Форум gcc 4.1.2 как собрать? (2013)
- Форум Простая программа на Objective-C. (2003)
- Форум Установка SP-Forth (2009)
- Форум [gcc] [cpp] [double] отнимаем и получаем [nan] (2010)
- Форум Ошибка линковки при кросскомпиляции с помощью mingw - multiple definition of ... (2020)