跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 关于不同的 PHP 语法在并发时的性能问题请教
未分類
24 11 月 2020

关于不同的 PHP 语法在并发时的性能问题请教

关于不同的 PHP 语法在并发时的性能问题请教

資深大佬 : yuandj 6

运行环境

  • php 版本:php7.4.3
  • 程序框架:hyperf 2.0
  • swoole 版本:4.5.1

代码示例

// 简写语法 1 if (!empty($res['ad'])) $res['ad']['feed_position'] = $config->feed_position ?? null;  // 原始语法 1 if (!empty($res['ad'])) {     $res['ad']['feed_position'] = $config->feed_position ?? null; }  // 简写语法 2 if (!empty($cAd['dspResponse'])) $bid['dspResponse'][] = $cAd['dspResponse'];  // 原始语法 2 if (!empty($cAd['dspResponse'])) {  $bid['dspResponse'][] = $cAd['dspResponse']; } 

问题:

上面两种不同的语法,简写语法:在 QPS 750~1100 左右时,从监控平台查看,遇到了服务器响应时间过长的问题;修改为原始语法后,恢复正常,哪位大佬能解答一下原因呢?

大佬有話說 (10)

  • 資深大佬 : puzzle9

    不是 主要是你这代码 这么看了半天
    你直接赋值不好吗 为啊哈还要判断下

  • 資深大佬 : dd112389

    这是只少了个大括号 ?
    没有遇到过.

  • 資深大佬 : imdong

    这种语法应该只在解析时有区别,执行应该没有区别。

    AST 无法解析有可能会少一层 Block ?

    不过讲真,这种语法上的性能差距(假设有),应该也是亿次执行才能被感觉到的差距。

    之前研究过 if ($a == false) 与 if (!$a) 的性能差异,事实是有,但太小,完全可以忽略不计
    。

    https://www.qs5.org/Post/637.html

  • 資深大佬 : lijialong1313

    如果需要,你试一下降低一个 php 版本( 7.3.24 应该是)看看会不会

  • 資深大佬 : jhdxr

    这两句解析后没有区别,去看看别的地方吧

  • 資深大佬 : dilu

    这个问题有点意思,我先研究研究看

  • 資深大佬 : ben1024

    脱离框架原生运行是否这样呢

  • 資深大佬 : NCE

    粗略看应该出在$cAd 这个对象很大,TPS 多的情况下对内存开销有影响。

  • 資深大佬 : felix021

    用 vld 生成 opcode 看看吧,估计没啥区别,猜测问题在其他地方,或者实际的代码情况比截出来的复杂。

  • 資深大佬 : lovecy

    你就这几行,能有啥逻辑问题?
    而且这种简写是完全要避免的,后面维护很容易出问题
    非要说是逻辑问题,肯定是简写导致了后面的代码没有包括到 if 块里面,检查下吧

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具