Mierzenie czasu I
Na slajdach wykładu zobaczyłeś(-aś), jak załadować funkcję time.time() i użyć jej do oceny czasu potrzebnego na wykonanie podstawowej operacji matematycznej.
Teraz użyjesz tej samej strategii, aby porównać dwie różne metody rozwiązania podobnego problemu: obliczenie sumy kwadratów wszystkich dodatnich liczb całkowitych od 1 do 1 miliona (1 000 000).
Podobnie jak w filmie, porównasz dwie metody: jedną opartą na podejściu siłowym i jedną bardziej wyrafinowaną matematycznie.
Funkcja formula korzysta ze standardowego wzoru
$$ \frac{N*(N+1)(2N+1)}{6} $$
gdzie N=1 000 000.
Funkcja brute_force iteruje po każdej liczbie od 1 do 1 miliona i dodaje ją do wyniku.
To ćwiczenie jest częścią kursu
Wydajne programowanie z pandas
Instrukcje do ćwiczenia
- Oblicz wynik zadania, korzystając z funkcji
formula(). - Wyświetl czas potrzebny do obliczenia wyniku za pomocą funkcji
formula(). - Oblicz wynik zadania, korzystając z funkcji
brute_force(). - Wyświetl czas potrzebny do obliczenia wyniku za pomocą funkcji
brute_force().
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Calculate the result of the problem using formula() and print the time required
N = 1000000
fm_start_time = ____
first_method = formula(N)
print("Time using formula: {} sec".format(time.time() - fm_start_time))
# Calculate the result of the problem using brute_force() and print the time required
sm_start_time = ____
second_method = ____(N)
print("Time using the brute force: {} sec".format(time.time() - sm_start_time))