madf: (Default)
[personal profile] madf
Результати зборки Stargazer різними компіляторами.

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.

Profile

madf: (Default)
madf

April 2018

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 7th, 2026 09:00 pm
Powered by Dreamwidth Studios