Отрицательное время выполнения - PullRequest
1 голос
/ 29 марта 2010

Я написал небольшую программу, которая решает 49151 судоку в течение часа для выполнения задания, но нам пришлось рассчитать время. Я думал, что просто запустил его, а затем проверил время выполнения, но он говорит -1536.087 с. Я предполагаю, что это связано с тем, что таймер является каким-то подписанным типом данных или чем-то, но я понятия не имею, какой тип данных используется для таймера в консоли (консоль code :: blocks, я не уверен, является ли это отдельная консоль, или просто бегун, который запускает терминал из локальной операционной системы), поэтому я не могу проверить, что было в реальном времени. Я бы предпочел не запускать это снова с некоторым закодированным таймером в моей программе, так как я хотел бы иметь возможность снова использовать мой компьютер. У кого-нибудь есть идеи, что может быть на этот раз? Это должно быть где-то между 40 и 50 минутами, то есть между 2400 и 3000 секундами.

Ответы [ 4 ]

10 голосов
/ 29 марта 2010

Если бы время сохранялось в микросекундах в 32-битном целом со знаком, 2758880296 us (микросекунды) дало бы этот результат, поскольку 2758880296-2^32 = -1536087000. В минутах и ​​секундах это 45:58.880296. (обработайте эти последние несколько десятичных знаков крупицей соли, поскольку, вероятно, то, что вы напечатали, было округлено до ближайшей миллисекунды)

Но, конечно, это всего лишь разумное предположение, основанное на предоставленной вами информации.

2 голосов
/ 29 марта 2010

Я бы предположил 46 минут.

Предположим, 32-разрядное целое число со знаком, представляющее микросекунды.

Тогда -1,536,087,000us будет таким же, как 2,758,880,296us, что составляет 45: 58,880.

Вполне возможно, что есть другое представление, которое дает столь же правдоподобный результат в вашем диапазоне.

2 голосов
/ 29 марта 2010

Если вы работаете в Linux, используйте «time»:

$ time ./your_program
real    0m0.003s
user    0m0.004s
sys     0m0.000s
0 голосов
/ 29 марта 2010

Я бы предпочел 42 минуты, чтобы быть точным (игнорируя десятичные дроби и предполагая 12-битный тип данных со знаком) ... Но это глупое предположение, поскольку вы не включили никакой информации о том, как проверяется время выполнения.

...