Podczas wykonywania wielu testów porównawczych ostatnio natknąłem się na coś bardzo niepokojącego/interesującego/nowego dla mnie. Po przeprowadzeniu niektórych badań coraz bardziej do punktu (w co nie mogłem uwierzyć), wydaje się, że Windows XP (i prawdopodobnie wszystkie inne wersje również) uruchamia programy około 3 razy tak wolno, jak w trybie awaryjnym.Windows Safe Mode uruchamia proste programy (przynajmniej) 3 razy szybciej?
Weź to mały program, jako przykład:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
long i,j,k;
printf ("Starting...\n");
k = 12;
for (i = 0; i < 20000; i++)
for (j = 100000; j > 0; j--)
k = k * 12;
printf ("Done... k =%d", k); // just using k here to prevent the whole block isn't optimized away.
return 0;
}
Na moim 2.4 GHz komputera trwa ~ 2,5 sek do wykonania w trybie awaryjnym, a to trwa ~ 8 sekund, aby wykonać w trybie normalnym. (ThreadPriority = TIMECRITICAL, ProcessClass = REALTIME). NAWET gdy kompiluję i uruchamiam ten kod w sesji vmware-linux w tym bardzo normalnym trybie Windows uruchamia się szybciej (około 5,5 s).
Wykonałem również wiele pomiarów w cyklu procesora, a wyniki w trybie bezpiecznym wydają się znacznie bardziej zgodne z oczekiwaniami, biorąc pod uwagę liczbę przetwarzanych instrukcji.
Więc, co przegapiłem? Czy ktoś może mi to zagadnąć?
Wszystkie wskazówki i porady zostały docenione, Thanx.
SOLVED! Przykro mi, chłopaki, ten problem jest związany z moim brzydkim alienware m15x, który z jakiegoś powodu dławi się do pozornie 1/3 mocy procesora - chyba że użyjesz złych narzędzi (ThrottleStop.exe), aby dostosować go do normalności prędkość. Wyjątkowo przykro z powodu marnowania czasu. :(
Jak mierzysz czas? Nie ma tam kodu pomiarowego i czy na pewno cała pętla nie jest tak zoptymalizowana? Kompilator może być w stanie wyliczyć wartość k w czasie kompilacji – AshleysBrain
Tak, opuściłem to, próbując dla uproszczenia, w rzeczywistości i tak nie ufałem niczemu więcej, więc zrobiłem pętlę wystarczająco dużą, by usiąść tam ze stoperem w dłoni, to naprawdę 2,5 sekundy na 8 - 8,5 sekundy. i ja obejrzałem kod maszynowy - więc nie, nie został zoptymalizowany - także: jego ten sam kod uruchomiono 1 raz w trybie normalnym - 1 raz w trybie bezpiecznym –
@Roman Pfneudl, to jest interesujące, zwłaszcza, że jesteś nie robi nic intensywnego dysku, ale czy próbowałeś zatrzymać antywirusa/anty-malware i zobaczyć, czy to robi różnicę? –