Jste si tim jist? Zkousim obcas pres https://godbolt.org/ jak vypada v jakem prekladaci jaky kod a:
- msvc x64 mi neprijde zdaleka nejhorsi
- gcc-10/11 x64 mi prijde obvykle horsi nez msvc x64
- clang/llvm nebo icc mi na prvni pohled prijdou ze generuji lepsi kod nez oba predchozi, minimalne je ten kod dost jiny, casto s nejakou vtipnou optimalizaci
Vsechno to jsou dojmy, snad jen az na vyjimky kdy dam -Os, to se da celkem snadno overit bez toho aby clovek znal detaily jednotlivych CPU/instrukci. Dale si nejsem jist zda ovladam dobre parametry vsech prekladacu, aby se neomezoval na nejake instrukce umele (napr. donutit gcc vektorizovat je obcas problem).
Zajimavy.ICC neni jen kompilator, ale i runtime knihovny. Takze napr pokud vas kod zavola "memcpy", tak kod vygenerovany ICC zavola knihovni funkci "__fast_memcpy_A" anebo nejakou jinou. V zavislosti na tom, jaky CPU pouzivate.
Tehle "hack" funguje ale pouze na Intel procesorech. Takze pokud vas software bezi na AMD tak se tyhle vychytavky nepouziji.
Je to jeijich kompilator a jejich pravidla.
Pokud se ale ICC zmeni v pouhy plugin to LLVM, tak je mozne z toho bude mit prospech i zakaznici AMD.
PS: o podobne pluginy dlouho stali i uzivatele gcc (viz treba projekt gcc-xml). RMS tomu ale branil protoze se bal ze by jeho kompilator nekdo pouzival ke komercnim ucelum.