У меня есть этот код:
for i in 1 .. 10 do
let (tree, interval) = time (fun () -> insert [12.; 6. + 1.0] exampletree 128.)
printfn "insertion time: %A" interval.TotalMilliseconds
()
с функцией времени, определенной как
let time f =
let start = DateTime.Now
let res = f ()
let finish = DateTime.Now
(res, finish - start)
функция вставки здесь не имеет значения, за исключением того факта, что она не использует мутацию и, таким образом, каждый раз возвращает одно и то же значение.
Я получаю результаты:
insertion time: 218.75
insertion time: 0.0
insertion time: 0.0
insertion time: 0.0
insertion time: 0.0
insertion time: 0.0
insertion time: 0.0
insertion time: 0.0
insertion time: 0.0
insertion time: 0.0
Вопрос в том, почему код вычисляет результат только один раз (из времени вставки результат всегда верен и равен)? Кроме того, как заставить программу выполнять вычисления несколько раз (мне это нужно для профилирования)?
Редактировать: Джаред дал правильный ответ. Теперь, когда я знаю, что искать, я могу получить код секундомера из функции timeit для F #
У меня были следующие результаты:
insertion time: 243.4247
insertion time: 0.0768
insertion time: 0.0636
insertion time: 0.0617
insertion time: 0.065
insertion time: 0.0564
insertion time: 0.062
insertion time: 0.069
insertion time: 0.0656
insertion time: 0.0553