Недавно я написал короткую программу Python для вычисления факториала числа в качестве теста, чтобы увидеть, насколько быстрое целочисленное умножение сравнивается с умножением с плавающей запятой. Вообразите мое удивление, когда я заметил, что это было умножение с плавающей запятой, которое было быстрее! Я озадачен этим и надеюсь, что кто-то сможет просветить меня. Я использую точно такую же функцию для вычисления факториала и просто передаю ей число с плавающей точкой вместо целого числа. Вот код:
import time
def fact(n):
n_fact = n
while n > 2:
n_fact *= n - 1
n -= 1
print(n_fact)
return n_fact
n = int(input("Enter an integer for factorial calculation: "))
n_float = float(n)
# integer factorial
start = time.time()
fact(n)
end = time.time()
print("Time for integer factorial calculation: ", end - start, "seconds.")
# float factorial
start = time.time()
fact(n_float)
end = time.time()
print("Time for float factorial calculation: ", end - start, "seconds.")
Когда я запускаю эту программу, результаты меняются, но в целом целочисленные вычисления в большинстве случаев выполняются быстрее, что противоречит всему, что я думал (знал ум, я не эксперт). Что-то не так с моим методом расчета времени? Нужно ли выполнять вычисления тысячи раз, чтобы получить более точную оценку времени? Любое понимание будет оценено.