2010-03-29 51 views
1

我写了一个小程序,可以在一小时内为一个任务解决49151个数独,但是我们必须计时。我想我只是让它运行,然后检查执行时间,但它说-1536.087秒。我猜它必须做的时间是一些签名dataype什么的,但我不知道在控制台中的定时器使用什么数据类型(code :: blocks控制台,我不知道这实际上是一个单独的控制台,或者只是一个从本地操作系统运行终端的跑步者),所以我无法检查真正的时间。我宁愿不用我的程序中的一些编码计时器再次运行,因为我希望现在能够再次使用我的电脑。任何人都知道这个时间会是什么?它应该在40到50分钟之间,所以在2400到3000秒之间。负执行时间

+1

请发表您的代码的相关部分... – 2010-03-29 02:15:15

+0

发布他的代码无济于事,计时器结果来自他的IDE:“我不知道控制台中的计时器使用了什么数据类型(代码::块控制台)“ – 2010-03-29 02:39:33

+0

@Steve Jessop:啊,你是对的 - 我掠过太快,读取这一点,指出OP使用了一些提供计时器的类,所以我们可能能够找到返回类型。 – Cascabel 2010-03-29 02:59:42

回答

10

如果时间以32位带符号int存储在微秒中,则2758880296 us(微秒)将产生此结果,因为2758880296-2^32 = -1536087000。在几分钟和几秒钟内,这是45:58.880296。 (用一粒盐处理那些最后几位小数,因为大概你所打印的是四舍五入到最接近的毫秒)

但是,当然,这只是一个基于你提供的信息的智能猜测。

+0

谢谢,愚蠢的我没有想到微秒。在发布代码时:这是没用的,因为它是代码运行后的执行时间,它与代码本身无关。那么,当然代码会影响时间,但我的意思是我没有编写计时器代码,它是代码::块中的控制台的一些定时器,用于执行线程。 – FinalArt2005 2010-03-29 03:14:31

+0

哦,对不起,你已经说过你明白在这个问题本身的评论中,我猜我掠过得太快了;) – FinalArt2005 2010-03-29 03:25:27

2

如果你在Linux上运行,用“时间”:

$ time ./your_program 
real 0m0.003s 
user 0m0.004s 
sys  0m0.000s 
+2

-1,“我宁愿不再运行这个” – 2010-03-29 02:40:26

0

我猜42分钟是准确的(忽略小数,并假设一个12位带符号的数据类型)......但是,这是一个愚蠢的猜测,因为你没有包括任何有关如何检查执行时间的信息。

+1

我不确定你是如何得到这个结果的 - 或者你为什么认为12位数据类型可能(在C++中声明一个好运气)。 – Cascabel 2010-03-29 02:37:34

+2

@Jefromi:'struct int12 {int val:12;/*很多,很多操作符重载* /};';-) – 2010-03-29 02:44:01

+0

@Jefromi:他显然做出了一个荒谬的猜测来证明需要更多信息才能给出正确的响应。我们不知道数据类型......但是,鉴于OP说“不到一个小时”,我们可以做出一个非常好的猜测,我们可以假设它溢出了它少。鉴于提供的值,最有可能的是32位有符号时间表示。 – 2010-03-29 02:50:04

2

我猜46分钟。

假设一个32位有符号整数表示微秒。

然后-1,536,087,000us将与2,758,880,296us相同,即45:58.880。

虽然有可能有另一种表达方式在您的范围内给出同样可信的结果。