gpt4 book ai didi

PHP 变量重用

转载 作者:行者123 更新时间:2023-12-04 18:18:56 25 4
gpt4 key购买 nike

在开始之前,我不是在询问标准编码实践或“礼仪”。我的问题更多是出于对 PHP 内部结构的好奇。到目前为止,我的研究似乎发现人们对 PHP 的范围感到困惑。

在 PHP 中重用变量是否有任何好处/坏处,无论是内存还是速度?为了科学。

假设您在整个脚本中按顺序访问多个文件。

  • 场景 A:每个句柄都有一个变量 $file1、$file2、$file3 等。
  • 场景 B:您的句柄全部重用变量 $fp

  • 这种理论场景是否需要分别占用资源密集型的脚本? B 会允许垃圾收集摆脱旧句柄而 A 不会吗?通过 Zend 进行的优化会使这成为一个非问题吗?

    最佳答案

    这个问题没有一个简单的答案。优化和性能在很大程度上取决于您的特定代码库、它运行的平台、服务器上运行的其他内容等等。

    首先,您的场景太模糊,无法提供足够的答案。但是,要触及一些先前的评论/担忧......

    PHP 没有非常明确的垃圾收集规则。在 THEORY 场景中,由于垃圾收集,函数退出时 A 将释放内存。实际上,这种情况很少发生。有许多触发器会导致垃圾回收释放该内存,但在幕后,实际的低级 free() 和 mallocs() 并没有被淘汰。如果您仔细观察内存堆栈,您会发现在函数退出后,$file1、$file2、$file3 的内存空间将保留。有时直到整个应用程序退出。

    您的应用程序构建还将确定哪个更快,在符号表中为 $file1、$file2、$file3 创建一个新条目或反复使用 $fp。在理论上,再次使用 $fp 通常意味着不需要重新分配内存空间,并且不需要重新创建新的符号表条目和相应的管理对象。然而,这并非总是如此。有时重新使用 $fp 实际上可能会更慢,因为需要先调用销毁,然后重新创建对象。在某些极端情况下,在迭代过程中创建一个新的 $file1、$file2、$file3 并让垃圾收集一次发生可能会更快。

    所以,这一切的底线......

    您需要在其原生环境中分析和测试您自己的应用程序,以了解事物在您的 Playground 中的行为方式。它很少是“总是这样做”或“从不这样做”的场景。

    关于PHP 变量重用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11111186/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com