Как сравнить несколько строк кода в nim?


person exebook    schedule 12.04.2016    source источник


Ответы (2)


Если вы планируете выполнять много измерений, лучший подход — создать повторно используемый вспомогательный шаблон, абстрагировав временной код:

import times, os, strutils

template benchmark(benchmarkName: string, code: untyped) =
  block:
    let t0 = epochTime()
    code
    let elapsed = epochTime() - t0
    let elapsedStr = elapsed.formatFloat(format = ffDecimal, precision = 3)
    echo "CPU Time [", benchmarkName, "] ", elapsedStr, "s"

benchmark "my benchmark":
  sleep 300

Это распечатает

CPU Time [my benchmark] 0.305s

Если вам нужны более полные данные о производительности всего кода, включенного в ваш проект, Nim предлагает специальный режим сборки, который дополняет скомпилированный код профилирующими зондами. Вы можете узнать больше об этом здесь:

http://nim-lang.org/docs/estp.html

Наконец, поскольку Nim генерирует код C с именами функций C, которые напрямую соответствуют их аналогам Nim, вы можете использовать любой C-профилировщик с программами Nim.

person zah    schedule 12.04.2016
comment
Эй, я не знал этого профиля. Ним полон секретов. - person Arrrrrrr; 14.04.2016

cpuTime вычисляет только время, которое ЦП фактически тратит на процесс, по крайней мере, в Linux. Так что все время сна не считается. Вместо этого вы можете использовать epochTime, что является фактической отметкой времени UNIX с точностью до доли секунды.

person def-    schedule 12.04.2016