Zastanawiam się nad pewnym faktem o którym krążą w necie przeciwstawne opinie, mi samemu brakuje wiedzy, żeby to w tej chwili ogarnąć .
- Czy w dzisiejszych czasach ma sens klepanie niskopoziomewego kodu biorąc za wyznacznik jego optymalizację pod kątem szybkości wykonania kodu, czy jednak faktycznie superzautomatyzowany kompilator zrobi to za człowieka dużo lepiej i ciężko by było go przegonić ?
Chciał bym w tym temacie przynajmniej rozjaśnić temat podpierając się praktycznymi rozwiązaniami nie zaś zapewnieniami, typu "tak jest\ nie jest".
Problemem jest to, że nie znam C++ a to właśnie któryś z kompilatorów tego języka chciałbym wziąć na tapetę.
Zrobiłem tak: W DevCpp zaznaczyłem opcje kompilatora "Best optimization" wklepałem taką funkcję (ma policzyć znaki stringu):
INT ansiLength ( LPSTR pstring )
{
INT i=0;
while (pstring[i] != 0)
{
i++;
}
i++;
return i;
}
następnie wrzucam w IDE i widzę takie coś:
xor eax, eax
cmp byte ptr [ebp+var_18], 0
lea edx, [ebp+var_18]
loc_401365:
inc eax
cmp byte ptr [eax+edx], 0
jnz short loc_401365
loc_40136A:
...
No chyba każdy przyzna, że nie jest to najlepszy przykład kodu ...
Ciekaw jestem jakiejś fachowej opinii na ten temat jakichś innych przykładów lub kompilatorów .