( uid_21365 | 2020. 10. 24., szo – 16:27 )

Köszi a tippet. Azt hittem eddig, a -O2 esetén magától is van annyi esze a C nyelvnek hogy eleve arra az architektúrára optimalizáljon amire ő maga is lett fordítva annak idején... De kiderült hogy nincs ennyi esze. Mert most a régebbi nyelvemet, a Furort kipróbáltam az

-march=x86-64

direktívával, és a benchmarkjaim alapján a korábbiakhoz képest majdnem kétszeresére nőtt a sebessége! A prímszámok keresésében például az előző időszükséglet mindössze 55 százalékát igényli. Azaz most a natív prímkereső C változat idejének csak a 9.5 -szörösét igényli, természetesen akkor ha a natív programot is ugyanígy optimalizálom. Érdekes azonban, annak a sebességén alig dob valamit ez a -march kapcsoló... Úgy tűnik minél komplexebb a program, annál érdemesebb ezt az -march dolgot "belevenni"...

Kipróbáltam a -march=corei7 kapcsolót is, úgy még gyorsabb a nyelvem, de az előző x86-64 -es optimalizáláshoz képest csak kb 5 százalékos a javulás már.

Amúgy elkezdtem emiatt utánanézni hogy pontosan miket tud speciálisan linux terén ez a gcc... kiderült, akadnak azért jó szolgáltatások itt amikről még nem is hallottam. Bár jobbára csak „szépségtapaszok”, de mert elég maximalista fickó vagyok, örülök nekik. Például ez:

__attribute__ ((noreturn))

Meg ez a lehetőség is nagyon tetszik:

__attribute__ ((unused))