当前位置:首页 > 每日看点 > 正文内容

如何评价PHP的FierRFC?

卡卷网12个月前 (01-10)每日看点169

我在之前一篇回答中传送门,有人对我的回答中做了回复,大概意思是说Fier的描述来看和yield很像。

在我多年的开发经验中,深入研究yieldFier后,发现它们之间存在着显著的差异。

首先,yield这个特性较特,它并不具备自身专有的栈空间。当我们使用yield函数时,作为开发者,面临着两种处理方式。一方面,我们可以使用foreach循环对其进行迭代处理;另一方面,也可以借助yieldfrom作符,将这个迭代器传递给调用者,让调用者来完成迭代作。然而,这种机制在实际开发中会给我们带来一些不便之处。当我们调用一个函数时,必须要明确知晓该函数是否为yield函数。如果是yield函数,就需要我们对其进行额外的处理,要么我们自己编写代码对其进行迭代,要么将迭代的工作转交给外层调用者。在涉及到深度函数调用的情况下,这种处理方式无疑会给我们增加不少负担,开发过程会变得更加繁琐。从某种程度上,这与JaScript中的await有些许相似之处,但又不完全相同。

与之相,Fier则具有自己的调用栈。值得注意的是,Fier通常具有约1M的栈开销,这在使用时是需要我们重点考虑的一个因素。它可以在函数调用的任意深度位置使用Fier::suspend()来暂停执行,而恢复执行的作只需要在最外层Fierstart的作用域内进行处理即可。更重要的是,在嵌套调用的过程中,对于那些调用函数的开发者而言,无需关心被调用的函数内部是否使用了Fier::suspend()。因为一旦使用了Fier::suspend(),整个调用栈都会停止,CPU的执行流程会自动回到Fierstart或者Fierresume的位置。无论函数调用的深度是五层还是十层,开发者都无需为此心,它可以像一个普通的同步函数调用一样作,内部的细节被很好地隐起来,这对于开发者来说,无疑是更为友好和便捷的开发体验,极大地简化了开发过程中的复杂性和认知负担,让我们能够更加专注于业务逻辑的实现,而不必陷入繁琐的底层细节处理之中。

作为开发人员,在不同的场景下,我们需要根据具体的需求来选择使用yield还是Fier。对于简单的迭代任务,yield或许可以满足需求,但在处理复杂的并发和异步作时,Fier凭借其特的特性,为我们提供了更强大的功能和更简洁的开发模式,让我们能够更高效地实现复杂的程序逻辑,避免陷入不必要的开发困境。这也是我们在开发过程中,需要不断权衡和选择的重要方面,根据项目的实际情况,合理运用这些特性,才能编写出高质量、高性能的代码。

在使用yield时,我们需要时刻关注迭代的处理方式,因为其简单的实现机制虽然节省了栈空间,但在复杂的嵌套调用场景下会让开发者感到困扰。而Fier的出现,为我们解决了这一问题,其的调用栈和简洁的暂停恢复机制,是它在处理复杂任务时展现出的强大优势,使我们能够轻松驾驭深度嵌套和并发作,为我们在并发编程的海洋中提供了更加稳健的航行工具。这也反映了不同语言特性的设计初衷,旨在为我们提供多样化的工具,以应对各种复杂的开发需求。

不过,需要注意的是,在使用Fier时,虽然它带来了诸多便利,但也要考虑到其可能存在的性能开销,特别是在大规模使用的情况下,其栈空间可能会消耗较多的内存资源,这就需要我们在开发时进行仔细的权衡和资源规划。总之,在软件开发的世界里,我们要充分理解各种工具的特性,发挥它们的优势,规避它们的劣势,以达到最优的开发效果。

总之,作为开发者,我们应当根据具体的开发场景和性能需求,灵活运用这些特性,同时,也要时刻关注代码的可性和性能优化,以确保我们的代码在满足功能需求的同时,能够高效稳定地运行。这需要我们不断积累经验,在实践中不断探索和总结,才能在不同的开发场景下做出最恰当的选择。

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/8347.html

分享给朋友:

相关文章

需要做一个微信小程序项目,大公司价格太高怎么办?

需要做一个微信小程序项目,大公司价格太高怎么办?

一个小程序制作开发多少钱构建一个微信小程序大概需要花费多少资金? 一、自主开发如果选择自主开发,这里面门道可不少。微信小程序认证费用: 300 /年域名费用: 30 - 80 /年服务器费用: 600 - 3000 /年这么一算,扣除人力成...

为什么大家都说手机性能永远超不过PC?

最新的天玑9400牛逼吧,堪称PC级CPU,测试成绩16W功耗能跑9500分,1.8W能跑3000分,GPU也差不多是这个情况。手机电池一般是4000-5000毫安时,电压3.7V。也就是说,手机正常满载5W功耗下,这个电池能支持运行4个小...

如何判断 Java 工程师的基础知识是否扎实?

我来给你出几道大题,能答对70%,你就算基础扎实了。第一部分 Java基础(27)1. 程序本质:代码是如何被执行的?CPU、操作系统、虚拟机各司何职?2. 基础语法:从CPU角度看变量、数组、类型、运算、跳转、函数等语法3. 引用类型:同...

想入个键盘,想买机械的但是太贵,求知友推荐一款手感比较好的薄膜键盘?

想入个键盘,想买机械的但是太贵,求知友推荐一款手感比较好的薄膜键盘?

相信很多接触过286的90后朋友都和我有一样的体会,以前的机械键盘真的是让人头皮发麻,不仅敲击要非常用力,而且很吵。所以后面随着大家的生活消费水平的上升,家家户户都有电脑了,自然也不想再用打字来宣扬自己有电脑的优越感,基本上大家都换成了又轻...

鸿蒙系统到底是不是安卓系统?

你好,是的。接下来我给不懂技术的人简单的说一下哄蒙系统的来龙去脉。首先你要知道什么是开源。‌‌开源(Open Source)全称为开放源代码‌,意味着任何人都可以获取和使用软件的源代码,并在遵守版权协议的前提下进行修改和再发布。‌12开源软...

SWITCH销量会破亿吗?

SWITCH销量会破亿吗?

不可能破亿的。能过5000万就了不起了。我觉得是过不了5000万这条线的,要是过了的话,每过100万我在这个回答里更新一个任天堂游戏人物的画像。愿赌服输。5100万突破的马里奥5200万突破的碧琪公主财报更新了,目前5577万。5300万突...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。