javascript - 为什么将 JavaScript 正则表达式文字分配给变量时执行速度较慢?
问题描述
我的问题与之前的Stackoverflow 帖子有关,它说以下两种方式的速度几乎相同。
但是当我实际使用循环计数 1000000 测试它时,似乎有一致的性能。虽然我预计示例 1 应该更快,但结果却比示例 2 慢。
测试页面的结果在这里。例如1,执行时间为:[20.27,19.82,16.17],但例如2,它们更少:[18.57,15.48,15.14]。
结果让我很困惑。任何人都可以暗示原因吗?
var str = "Hello World";
// Example 1
var regExp1 = /[aeiou]+/gi;
for(var i = 0; i < 1000; ++i)
regExp1.exec(str);
// Example 2
for(var j = 0; j < 1000; ++j)
/[aeiou]+/gi.exec(str);
解决方案
它必须更慢。
因为每次您在循环中进行新的迭代时,您都会在执行正则表达式之前重新评估它。
这会导致一个小的延迟,但对于大循环,会有一个时间差
在第一个示例中,它已经被定义和评估。
因此,唯一需要的时间是执行。
推荐阅读
- flutter - 颤振:重复 notifyListeners()
- php - 如何在 Stripe API PHP 中列出所有取消的订阅
- python - 基于布尔数组将列插入numpy数组
- java - 两个单独的方法中的 CompareTo 方法
- laravel - Laravel Horizon - 1 Worker 一次处理超过 1 个作业
- c# - C# MVC 无法在 Bootstrap 选项卡中加载部分视图
- php - 优化图像 - 在 php 中无损压缩图像
- amazon-web-services - 关闭使用 -t 运行的 Docker 容器
- c# - Unity RPG 状态表修复
- minecraft - 如何获取服务器 minecraft 的重启命令以工作 1.16.3