延时毫秒级别再继续运行的方法探讨
来源:互联网 发布:java 四行杨辉三角 编辑:程序博客网 时间:2024/05/17 02:14
在php 当中实现毫秒级别的延迟执行可以使用usleep 来实现,但是在执行的过程中,该函数执行的记录如下:
#! /usr/local/php/bin/php -q
<?php
$i=0;
$his_time=date("Y-m-d H:i:s");
while(1)
{
/*
for($i=0;$i<(100000*2);$i++)
{
$c=$i;
}
*/
if (isset($c_time))
$his_time=$c_time;
$c_time=date("Y-m-d H:i:s");
if($c_time>$his_time)
$i=0;
echo $c_time." ".$i."\n";
$i++;
usleep(20000);
}
?>
那么每秒会打印44-46次$i 信息(单核,无超线程CPU 中);测试上跟实际的参数为毫秒不相符,按正常来说会20秒打印一次结果。
这个结果在专门的4核心,8cpu 的测试结果一样,都是打印43-50次结果。
那么这样来计算的话,要1秒执行5次,
usleep(200000),刚好打印5次,每秒。
那么是否可以说明usleep 所带的参数为微秒为单位的?20*1000 刚好20毫秒。
如果使用空循环来自己做的话,那么这个循环就跟CPU 的核心数有很大的关系了。
单CPU:
#! /usr/local/php/bin/php -q
<?php
$j=1;
$his_time=date("Y-m-d H:i:s");
while(1)
{
for($i=0;$i<(100000*2);$i++)
{
$c=$i;
$his_time=$c_time;
$c_time=date("Y-m-d H:i:s");
if($c_time>$his_time)
$j=1;
echo $c_time." ".$j."\n";
//usleep(200000);
}
?>
这个循环每秒最多打印9次。
如果是4核心8cpu 的话,那么循环次数要*8 ,即100000*8
从以上的测试结果看,是否可以估计我们的cpu 的计算能力为每秒100万次/秒?
#! /usr/local/php/bin/php -q
<?php
$i=0;
$his_time=date("Y-m-d H:i:s");
while(1)
{
/*
for($i=0;$i<(100000*2);$i++)
{
$c=$i;
}
*/
if (isset($c_time))
$his_time=$c_time;
$c_time=date("Y-m-d H:i:s");
if($c_time>$his_time)
$i=0;
echo $c_time." ".$i."\n";
$i++;
usleep(20000);
}
?>
那么每秒会打印44-46次$i 信息(单核,无超线程CPU 中);测试上跟实际的参数为毫秒不相符,按正常来说会20秒打印一次结果。
这个结果在专门的4核心,8cpu 的测试结果一样,都是打印43-50次结果。
那么这样来计算的话,要1秒执行5次,
usleep(200000),刚好打印5次,每秒。
那么是否可以说明usleep 所带的参数为微秒为单位的?20*1000 刚好20毫秒。
如果使用空循环来自己做的话,那么这个循环就跟CPU 的核心数有很大的关系了。
单CPU:
#! /usr/local/php/bin/php -q
<?php
$j=1;
$his_time=date("Y-m-d H:i:s");
while(1)
{
for($i=0;$i<(100000*2);$i++)
{
$c=$i;
}
$j++;
if (isset($c_time))$his_time=$c_time;
$c_time=date("Y-m-d H:i:s");
if($c_time>$his_time)
$j=1;
echo $c_time." ".$j."\n";
//usleep(200000);
}
?>
这个循环每秒最多打印9次。
如果是4核心8cpu 的话,那么循环次数要*8 ,即100000*8
从以上的测试结果看,是否可以估计我们的cpu 的计算能力为每秒100万次/秒?
- 延时毫秒级别再继续运行的方法探讨
- 延时毫秒级别再继续运行的方法探讨
- 毫秒级别精确延时
- 毫秒级别的时间差
- setTimeout延时0毫秒的作用
- setTimeout延时0毫秒的作用
- setTimeout延时0毫秒的作用
- setTimeout延时0毫秒的作用
- setTimeout延时0毫秒的作用
- setTimeout延时0毫秒的作用
- setTimeout延时0毫秒的作用
- setTimeout延时0毫秒的作用
- setTimeout延时0毫秒的作用
- 调试器无法继续运行的方法
- ubuntu更改运行级别的方法
- Java生成不重复的数的方法(精确到毫秒级别)
- python logging 毫秒级别的时间打印
- RocketMQ延时消息的使用和延时级别的配置
- Android之MVC模式
- 我开发的几个手机应用
- Fixing “Upload Aborted or Timed Out” errors in iTunes Connect
- New blog (Github+jekyll) 博客搬家了!
- Lesson 3 Nice to meet you.
- 延时毫秒级别再继续运行的方法探讨
- cin使用方法
- cin 清除缓冲区
- iPhone软件开发前需认真考虑问题
- Linux C和MySQL数据库写的一个“电话本管理程序”
- RtlCopyMemoryEx
- 程序员常用字体(vs2008字体修改方案)
- Longest Substring Without Repeating Characters
- linux c Make file 的生成