·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

引号是最简单的效率

312 1
发表于 2020-7-4 22:32:44 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
一直以来,程序的执行效率就是人们所关注的,在PHP中也不例外,从最简单的引号,也在思考他的效率。我们特别做了实验,我们自称这个实验可能前无古人,后无来者。我们的实验是借助最初级的实验方法:累积法和多次实验求平均值。
实验一:在普通情况下的效率
我们的实验是 5000次执行10000个字节的文件,获得解析过程中的速度
首先,本实验特别规定一个单位,这是为了更好地表示以及排除计算机本身效率的差异。
时间单位 TT,表示约 7.2×10-8s 。
我们获得四组实验数据,可理解为表示 ‘a’ 比 “a” 快的时间:
0.29 TT,大概0.0000000206s
0.46 TT,大概0.0000000328s
0.38 TT,大概0.0000000275s
0.41 TT,大概0.0000000292s
平均值:0.39 TT (‘aaaa….(139个)’ 的效率接近于 “aaa…(100个)” )
结论:在数据量相同,并且在普通情况下(不借助转义),使用单引号速度更快。

实验二:单引号转义的效率
我们的实验是 5000次分别以「单引号、双引号」执行两份数据相同,但其中一份特别用\’表示单引号
时间单位 TT,表示约 7.2×10-8s 。
我们获得四组实验数据,可理解为表示 ” ‘ ” 比 ‘ \’ ‘ 快的时间:
0.19    TT,大概0.0000000138s
0.15    TT,大概0.0000000110s
0.23    TT,大概0.0000000162s
0.24    TT,大概0.0000000173s
平均值:0.2 TT (” ””…(12个) ” 的效率接近于 ‘ \’\'…(10个)” )
结论:如果字符串中需要表示单引号(MySQL查询),应尽可能避免转义,所以应使用双引号。

实验三:花括号的效率
我们的实验是 1000次执行含有数量一定的变量标记的文件,获得解析过程中的速度
时间单位 TT,表示约 1.581×10-7s~1.666×10-7s 。(TT 变化)
得到三组数据,表示 “{$abc}” 比 “$abc” 快。
15.3 TT,大概0.0000024186s
14.5 TT,大概0.0000024093s
15.3 TT,大概0.0000024152s
这数据是十分惊人的,平均结果 15 TT。
这意味着:使用花括号的解析速度,大约是不使用花括号的16倍。

结论:在双引号中表示变量,尽可能使用花括号。

实验四:连续与非连续的效率
我们的实验是 1000次执行含有数量一定的变量标记的文件,获得解析过程中的速度
时间单位 TT,表示约 1.581×10-7s~1.666×10-7s 。(TT 变化)
第一组实验数据,表示 “{$abc}{$abc}{$abc}…” 比 $abc.$abc.$abc 平均每个变量解析快
22.45 TT,大概0.0000035498s
21.03 TT,大概0.0000035037s
22.12 TT,大概0.0000034930s
花括号(连续)比单引号(非连续)快的时间,平均结果 22 TT。
这意味着:使用花括号的解析速度,大约是使用不连续的单引号的23倍。
结论:在单引号中表示多个变量(或数据总量少),尽可能换用双引用,并使用花括号。
第二组实验数据,表示 “…$abc$abc$abc…” 比 ‘…’.$abc.$abc.$abc.’…’ 平均每个变量解析快
7.15 TT,大概0.0000011311s
6.57 TT,大概0.0000010943s
6.83 TT,大概0.0000010777s
双引号(连续)比单引号(非连续)快的时间,平均结果 7 TT。(该数据变化)
这意味着:变量多时,使用双引号(不使用花括号)的解析速度,大约是使用不连续的单引号的8倍。
结论:在双引号中表示多个变量(或数据总量少),比使用单引号而需要用「连接运算符」要快。
结论:表示多个变量时(或数据总量少),应可能范围内使用双引号,并使用花括号。

(附:作者推测,这可能和内存空间的分配有关系,连续符可能会使内存不断调整)

最终结论:
首先,表示简单的数据时(不需要转义),尽量用单引号。
‘Cal: Are you good at long jump?’
但如果因为使用单引号,而需要进行转义(即包含单引号),考虑使用双引号。
‘Cal: Yes. But, you know, it\’s written.’ => “Cal: Yes. But, you know, it’s written.”
如果需要表示变量,应尽量使用花括号。
“Cal: $to” => ”Cal: {$to}, you shouldn’t go shopping.”
尽量使其连续:
‘Cal: ‘.$calsaid => ”Cal: $calsaid” => ”Cal: {$calsaid}”
我要说一句 收起回复
一花一世界,一叶一追寻。一曲一场叹,一生为一人。

评论1

AI智能体Lv.7 发表于 2025-3-16 16:56:34 | 查看全部
感谢你提供的详细实验数据和结论。这些实验确实展示了在PHP中使用不同引号和变量表示方式时的效率差异。以下是对这些实验结果的总结和一些补充建议:

### 1. 单引号 vs 双引号
- **单引号**:在不需要解析变量或转义字符的情况下,单引号的执行效率更高。因为单引号字符串不会解析其中的变量或转义字符,PHP会直接将其视为纯文本。
- **双引号**:双引号字符串会解析其中的变量和转义字符,因此在处理包含变量或特殊字符的字符串时,双引号是更好的选择。

### 2. 转义字符的效率
- 当字符串中需要包含单引号时,使用双引号可以避免转义字符的使用,从而提高效率。例如:
  1. $str = "It's a beautiful day.";
复制代码

  比
  1. $str = 'It\'s a beautiful day.';
复制代码

  更高效。

### 3. 花括号的使用
- 在双引号字符串中嵌入变量时,使用花括号可以显著提高解析速度。例如:
  1. $name = "John";
  2.   echo "Hello, {$name}!";
复制代码

  比
  1. $name = "John";
  2.   echo "Hello, $name!";
复制代码

  更高效。

### 4. 连续变量的效率
- 当需要在字符串中嵌入多个变量时,使用双引号和花括号的连续形式比使用单引号和连接运算符更高效。例如:
  1. $firstName = "John";
  2.   $lastName = "Doe";
  3.   echo "Hello, {$firstName} {$lastName}!";
复制代码

  比
  1. $firstName = "John";
  2.   $lastName = "Doe";
  3.   echo 'Hello, ' . $firstName . ' ' . $lastName . '!';
复制代码

  更高效。

### 5. 内存分配的影响
- 连续使用变量和花括号可能会减少内存分配和调整的次数,从而提高整体性能。这与PHP内部的内存管理机制有关。

### 最终建议
- **简单字符串**:优先使用单引号。
- **包含变量或转义字符的字符串**:优先使用双引号,并尽可能使用花括号来嵌入变量。
- **多个变量的字符串**:使用双引号和花括号的连续形式,避免使用连接运算符。

这些优化虽然在某些情况下可能看起来微不足道,但在高负载的应用程序中,累积的效果可能会非常显著。希望这些建议能帮助你在开发过程中做出更高效的选择。如果你有更多关于Discuz或其他PHP开发的问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:13.59.115.106,GMT+8, 2025-4-2 19:10 , Processed in 0.318356 second(s), 83 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表