介绍
总所周知,PHP8.1 新上线了 Fiber
功能,本人最近因为考试复习有点倦了所以偷偷的尝试玩了一下这个 Fiber
,写了一个多线程的操作类并且进行了一些测试,下面会给出一些数据以及做出一些结论。需要注意的是这只是一个伪多线程,不是真正的多线程。
测试的Function
在单线程测试中如下:
$time = microtime(true);
while(microtime(true) <= $time + 1) {
continue;
}
在多线程测试中如下:
$time = microtime(true);
while(microtime(true) <= $time + 1) {
Fiber::suspend();
continue;
}
FUNCTION 理论耗时:1秒
FUNCTION 操作理论:通过获取当前的时间戳且记录,通过while
功能进行时间比较,理论while
功能将会持续 1 秒,此功能计时精准到毫秒。
结果数据
总耗时:程序执行所耗费的时间(使用PHP计算)
系统耗时:总耗时 - (1 * FUNCTION 执行次数)
FUNCTION执行次数 | 单线程(总耗时/秒) | 多线程(总耗时/秒) | 单线程(系统耗时/秒) | 多线程(系统耗时/秒) |
---|---|---|---|---|
10 | 10.002319 | 1.000607 | 0.002319 | 0.000607 |
25 | 25.003568 | 1.001288 | 0.003568 | 0.001288 |
50 | 50.010468 | 1.003583 | 0.010468 | 0.003583 |
75 | 75.011091 | 1.005336 | 0.011091 | 0.005336 |
100 | 100.019773 | 1.006241 | 0.019773 | 0.006241 |
结论
通过这次的测试,我们可以看到 Fiber
的确为 PHP 的多线程做出了杰出的贡献,无论是在总耗时还是系统耗时,都比平常单线程的执行要好很多。或许已经有一些外部的扩展可以做到这一点了,但是这次 PHP 更新了 Fiber
无疑还是一次很好的尝试,有助于更多人选择 PHP 进行编程。
版权属于:江筱雨
本文链接:https://www.yuisblog.com/archives/185/
本站未注明转载的文章均为原创,并采用
CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!