Странный результат stopWatch в Haskell - PullRequest
0 голосов
/ 26 апреля 2018

Пакет clock содержит функцию stopWatch , которая возвращает запись TimeSpec. Он имеет один конструктор с двумя полями: sec (секунды) и nsec (наносекунды). Однако выполнение этой команды дает странный результат:

TimeSpec {sec = 29, nsec = 656841598}

Не похоже, что nsec фактически относится к наносекундам, поскольку 1 секунда должна составлять 10 ^ 9 наносекунд. Это ошибка в библиотеке или что-то еще происходит?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

TimeSpec, разделенный на две части: второй счетчик и наносекундный счетчик для вторых фракций. Если вы хотите общее время в наносекундах, используйте toNanoSecs .

0 голосов
/ 26 апреля 2018

Поля sec и nsec показывают не одно и то же, выраженное в разных единицах, а части всего времени. То есть { sec = 1, nsec = 2 } означает « 1 секунда и 2 наносекунды ».

Попробуйте это:

print $ fromNanoSecs 1234567890000

> TimeSpec {sec = 1234, nsec = 567890000}
...