我使用microtime()来检查代码执行时间。 但是跟踪时间不正确似乎很奇怪。
所以在我的test.php中,我有以下代码:
$debug = true;
$start = microtime(true);
$newline = "<br/>";
...
if ($debug) {
$time_elapsed_secs = microtime(true) - $start;
$start = microtime(true);
echo 'Step 1 Done: ' . $time_elapsed_secs . $newline; }
...
if ($debug) {
$time_elapsed_secs = microtime(true) - $start;
$start = microtime(true);
echo 'Step 2 Done: ' . $time_elapsed_secs . $newline; }
然后当我在浏览器上打开URL时,它会在不到1秒内响应, 但它显示出一些奇怪的价值 第1步完成:0.0026565 第2步完成:9.8646454
怎么会发生这种情况? 我是否以错误的方式做某事?
答案 0 :(得分:2)
我猜你从你的描述中留下了一个小细节。我认为你实际看到的输出更像是......
cdef extern from "cppFactory.h" namespace "cpplibrary":
cdef cppclass CppFactory:
CppFactory() except +
# declare outside the class and use a string to specify name
# unfortunately this doesn't seem to play well with namespace
# so we need to specify it again
cdef CppFactory& CppFactory_GetInstance "cpplibrary::CppFactory::GetInstance"()
cdef class PyFactory:
cdef CppFactory* _thisptr
def __cinit__(self):
self._thisptr = &CppFactory_GetInstance()
当低于0.0001时,PHP会将浮点数置于科学计数法中。要使输出中的内容保持一致,请尝试将代码更改为以下内容,以十进制表示法显示microtimes。
Step 1 Done: 0.0026565
...
Step 2 Done: 9.8646454E-5
[注意:添加了usleep()调用以显示正在发生的事情。]
答案 1 :(得分:1)
这取决于两个步骤之间的代码。注释掉这两个步骤之间的代码(但是如果页面返回的时间少于1秒,你就是对的很奇怪。)
// Sleep for a while
usleep(100);
检查microtime是否测量正确的时间增量。