lukasz1235 napisał(a)
Wersja pierwsza
mov DWORD PTR [rbp-16], 1
wersja druga
mov eax, DWORD PTR [rbp-16]
test eax, eax
jne .L2
mov DWORD PTR [rbp-16], 1
.L2:
Wyraźnie widać, że pierwsza jest szybsza.
Wyraźnie widać, że nie masz o tym pojęcia. Obie wersje wciągają całą tablicę do cache'u, pierwsza modyfikuje wszystkie linie i wszystkie linie odsyła z powrotem do RAMu, druga odsyła tylko te, które faktycznie musiały zostać uaktualnione. Jeśli tablica jest dostatecznie duża, elementów niezerowych wystarczająco mało to koszt dodatkowego sprawdzenia będzie znacznie niższy niz koszt ciągłego odsyłania każdej kolejnej linii do pamięci fizycznej, co do najszybszych operacji nie należy.