我正在制作一个阻塞算法,我只是意识到如果它应该保持精确,那么为这样的算法添加超时就不那么容易了。
添加超时意味着阻塞算法应该在X ms之后中止,如果不是更早的话。现在我似乎有两个选择:
time_elapsed
迭代1(使用usleep表示1e-6秒)time_elapsed
与timeout
进行比较。 (这是我将讨论的问题)usleep(1)
timeout
time_elapsed
这就是困扰我的事情。 timeout
将以毫秒(10e-3)为单位,而usleep
将以10秒-6秒的速度休眠。因此,我的time_elapsed
将比timeout
精确1000倍。我希望截断 time_elapsed
的最后三位数(操作等于floor($time_elapsed/1000)
而不将其除以。分区算法太慢。
我希望将我的变量缩小1000倍而不将其除以1000.我想要摆脱数据。在二进制中我会使用位移运算符,但不知道如何在十进制系统上应用它。
有时,当SO上的人无法回答理论问题时,他们真的渴望代码。这是:
floor($time_elapsed/1000);
我希望用更快的代码替换这段代码。请注意,虽然问题本身充满了超时,但问题标题仅限截断该数据。其他用户可能会发现该解决方案可用于除计时之外的其他目的。
答案 0 :(得分:0)
也许这会对Php number format有所帮助。虽然这确实会导致舍入,但如果这是不可接受的,那么我认为它不可能,因为PHP是松散类型的,你不能用特定的精度来定义数字。
答案 1 :(得分:0)
试试这个:
(int)($time_elapsed*0.001)
这应该快得多