ekopath і всі-всі-всі
Jun. 16th, 2011 11:42 amРезультати зборки Stargazer різними компіляторами.
ekopath-4.0.10_pre20110612:
В процесі компіляціїї одного із плагінів компілятор викинув такий цікавий warning:
Спробуємо скористатись порадою (0 ставити не ризикнув, свопу немає).
ekopath-4.0.10_pre20110612 (більш агресивна оптимізація):
gcc-4.5.2:
clang-2.9:
Результати таблично:
Висновки.
ekopath тормоз і генерує самий "жирний" бінарник, але я не тестував його на швидкість (непідходящий бінарник для цього). Можливо це результат оптимізацій. ekopath накидав кілька дуже корисних warning'ів. У нього свій власний runtime.
gcc все ще рулить і педалить.
clang дихає gcc у спину. По швидкості компіляціїї він його уже "порвав", бінарники за розміром майже однакові. Не певен щодо оптимізацій. Десь зустрічав тести архіваторів на яких clang "зливає" gcc.
В принципі, мені різні компілятори цікаві тільки з точки зору швидкості збирання і як статичні аналізатори коду. Так що більше компіляторів нових і різних!
PS: звісно, для warning'ів я збирав усе у debug-режимі, з -W -Wall -Wextra, але без -pedantic.
ekopath-4.0.10_pre20110612:
faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ time CC=/opt/ekopath-bin-4.0.10_pre20110612/bin/pathcc CXX=/opt/ekopath-bin-4.0.10_pre20110612/bin/pathCC CXXFLAGS=-O2 ./build ... real 3m11.363s user 2m22.467s sys 0m5.544s faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ ls -l ./stargazer -rwxr-xr-x 1 faust faust 1998252 чер 16 10:42 ./stargazer faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ objcopy --strip-all ./stargazer ./stargazer faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ ls -l ./stargazer -rwxr-xr-x 1 faust faust 1271456 чер 16 10:42 ./stargazer faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ ldd ./stargazer linux-vdso.so.1 => (0x00007fff5f9ff000) libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007f2fb247f000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2fb2262000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f2fb205e000) libstglogger.so => not found libstglocker.so => not found libstgcommon.so => not found libstgscriptexecuter.so => not found libdotconfpp.so => not found libstl.so => /opt/ekopath-bin-4.0.10_pre20110612/lib/4.0.10/x8664/64/libstl.so (0x00007f2fb1d36000) libcxxrt.so => /opt/ekopath-bin-4.0.10_pre20110612/lib/4.0.10/x8664/64/libcxxrt.so (0x00007f2fb1b19000) libgcc.so => /opt/ekopath-bin-4.0.10_pre20110612/lib/4.0.10/x8664/64/libgcc.so (0x00007f2fb1912000) libeh.so => /opt/ekopath-bin-4.0.10_pre20110612/lib/4.0.10/x8664/64/libeh.so (0x00007f2fb16f0000) libc.so.6 => /lib64/libc.so.6 (0x00007f2fb1360000) libmv.so => /opt/ekopath-bin-4.0.10_pre20110612/lib/4.0.10/x8664/64/libmv.so (0x00007f2fb1133000) libmpath.so => /opt/ekopath-bin-4.0.10_pre20110612/lib/4.0.10/x8664/64/libmpath.so (0x00007f2fb0f13000) /lib64/ld-linux-x86-64.so.2 (0x00007f2fb26a8000) libm.so.6 => /lib64/libm.so.6 (0x00007f2fb0c8f000)
В процесі компіляціїї одного із плагінів компілятор викинув такий цікавий warning:
"rpcconfig.cpp": Warning: Olimit was exceeded on function RPC_CONFIG::InitiateRegistry(void); will not perform function-scope optimization. To still perform function-scope optimization, use -OPT:Olimit=0 (no limit) or -OPT:Olimit=7261 "rpcconfig.cpp": Warning: To override Olimit for all functions in file, use -OPT:Olimit=7261 (Compiler may run out of memory or run very slowly for large Olimit values)
Спробуємо скористатись порадою (0 ставити не ризикнув, свопу немає).
ekopath-4.0.10_pre20110612 (більш агресивна оптимізація):
faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ time CC=/opt/ekopath-bin-4.0.10_pre20110612/bin/pathcc CXX=/opt/ekopath-bin-4.0.10_pre20110612/bin/pathCC CXXFLAGS="-O2 -OPT:Olimit=7261" ./build ... real 3m18.030s user 2m26.457s sys 0m5.602s faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ ls -l ./stargazer -rwxr-xr-x 1 faust faust 1998508 чер 16 11:17 ./stargazer faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ objcopy --strip-all ./stargazer ./stargazer faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ ls -l ./stargazer -rwxr-xr-x 1 faust faust 1271712 чер 16 11:18 ./stargazer faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ ldd ./stargazer linux-vdso.so.1 => (0x00007fffdbd8b000) libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007f549901d000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f5498e00000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f5498bfc000) libstglogger.so => not found libstglocker.so => not found libstgcommon.so => not found libstgscriptexecuter.so => not found libdotconfpp.so => not found libstl.so => /opt/ekopath-bin-4.0.10_pre20110612/lib/4.0.10/x8664/64/libstl.so (0x00007f54988d4000) libcxxrt.so => /opt/ekopath-bin-4.0.10_pre20110612/lib/4.0.10/x8664/64/libcxxrt.so (0x00007f54986b7000) libgcc.so => /opt/ekopath-bin-4.0.10_pre20110612/lib/4.0.10/x8664/64/libgcc.so (0x00007f54984b0000) libeh.so => /opt/ekopath-bin-4.0.10_pre20110612/lib/4.0.10/x8664/64/libeh.so (0x00007f549828e000) libc.so.6 => /lib64/libc.so.6 (0x00007f5497efe000) libmv.so => /opt/ekopath-bin-4.0.10_pre20110612/lib/4.0.10/x8664/64/libmv.so (0x00007f5497cd1000) libmpath.so => /opt/ekopath-bin-4.0.10_pre20110612/lib/4.0.10/x8664/64/libmpath.so (0x00007f5497ab1000) /lib64/ld-linux-x86-64.so.2 (0x00007f5499246000) libm.so.6 => /lib64/libm.so.6 (0x00007f549782d000)
gcc-4.5.2:
faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ time CXXFLAGS=-O2 ./build ... real 1m21.814s user 0m41.078s sys 0m1.867s faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ ls -l ./stargazer -rwxr-xr-x 1 faust faust 426393 чер 16 10:47 ./stargazer faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ objcopy --strip-all ./stargazer ./stargazer faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ ls -l ./stargazer -rwxr-xr-x 1 faust faust 355600 чер 16 10:47 ./stargazer faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ ldd ./stargazer linux-vdso.so.1 => (0x00007fff69fdc000) libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007f96e47c4000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f96e45a7000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f96e43a3000) libstglogger.so => not found libstglocker.so => not found libstgcommon.so => not found libstgscriptexecuter.so => not found libdotconfpp.so => not found libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/libstdc++.so.6 (0x00007f96e4094000) libm.so.6 => /lib64/libm.so.6 (0x00007f96e3e10000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f96e3bf9000) libc.so.6 => /lib64/libc.so.6 (0x00007f96e3869000) /lib64/ld-linux-x86-64.so.2 (0x00007f96e49ed000)
clang-2.9:
faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ time CC=clang CXX=clang++ CXXFLAGS=-O2 ./build ... real 1m5.036s user 0m30.923s sys 0m1.752s faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ ls -l ./stargazer -rwxr-xr-x 1 faust faust 454735 чер 16 11:01 ./stargazer faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ objcopy --strip-all ./stargazer ./stargazer faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ ls -l ./stargazer -rwxr-xr-x 1 faust faust 384208 чер 16 11:02 ./stargazer faust@hammer ~/Projects/STG/stg-dev/projects/stargazer $ ldd ./stargazer linux-vdso.so.1 => (0x00007fff6972f000) libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007f355f9be000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f355f7a1000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f355f59d000) libstglogger.so => not found libstglocker.so => not found libstgcommon.so => not found libstgscriptexecuter.so => not found libdotconfpp.so => not found libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/libstdc++.so.6 (0x00007f355f28e000) libm.so.6 => /lib64/libm.so.6 (0x00007f355f00a000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f355edf3000) libc.so.6 => /lib64/libc.so.6 (0x00007f355ea63000) /lib64/ld-linux-x86-64.so.2 (0x00007f355fbe7000)
Результати таблично:
| Компілятор | Час компіляції | Розмір бінарника | Розмір бінарника (stripped) |
||
| real | user | sys | |||
| ekopath-4.0.10_pre20110612 | 3m11.363s | 2m22.467s | 0m5.544s | 1998252 | 1271456 |
| ekopath-4.0.10_pre20110612 з -OPT:Olimit=7261 |
3m18.030s | 2m26.457s | 0m5.602s | 1998508 | 1271712 |
| gcc-4.5.2 | 1m21.814s | 0m41.078s | 0m1.867s | 426393 | 355600 |
| clang-2.9 | 1m5.036s | 0m30.923s | 0m1.752s | 454735 | 384208 |
Висновки.
ekopath тормоз і генерує самий "жирний" бінарник, але я не тестував його на швидкість (непідходящий бінарник для цього). Можливо це результат оптимізацій. ekopath накидав кілька дуже корисних warning'ів. У нього свій власний runtime.
gcc все ще рулить і педалить.
clang дихає gcc у спину. По швидкості компіляціїї він його уже "порвав", бінарники за розміром майже однакові. Не певен щодо оптимізацій. Десь зустрічав тести архіваторів на яких clang "зливає" gcc.
В принципі, мені різні компілятори цікаві тільки з точки зору швидкості збирання і як статичні аналізатори коду. Так що більше компіляторів нових і різних!
PS: звісно, для warning'ів я збирав усе у debug-режимі, з -W -Wall -Wextra, але без -pedantic.