模拟性能评分计算 - 根据网络/资源条件
设定FCP、LCP、CLS等指标值,模拟计算PageSpeed Insights得分估算。
UD5工具箱
检测灾难性回溯 · 引擎执行时间对比 · Web Worker超时隔离
当正则引擎尝试匹配失败时,会回退到之前做过的选择点,尝试其他路径。这种"尝试-回退-再尝试"的过程就是回溯。在嵌套量词或复杂交替中,回溯次数可能呈指数级增长,导致性能急剧下降。
当正则表达式在特定输入下回溯次数呈指数级爆炸时,就发生了灾难性回溯。典型场景如 (a+)+b 匹配 "aaaaaaaaac"——引擎会尝试所有可能的a的分组方式,导致执行时间从毫秒级飙升到数秒甚至数分钟。
当两个量词嵌套(如 (a+)+),外层+和内层+都可以匹配多个a。匹配失败时,引擎需要尝试所有可能的分配组合,这导致回溯空间巨大。n个字符可能产生约2n种分法。
① 避免嵌套量词,如将(a+)+改为a+;② 使用更精确的字符类替代宽泛的.*;③ 利用锚点^$限制匹配位置;④ 减少不必要的捕获组;⑤ 对于复杂模式,考虑拆分多个简单正则分步匹配。
JavaScript使用回溯式NFA引擎(非确定有限自动机),采用深度优先搜索策略。这与Python的re模块、PHP的PCRE类似。与之相对的是DFA引擎(如Go的regexp包、RE2),后者保证线性时间复杂度但功能受限(不支持反向引用)。
本工具将每个正则表达式的测试放在独立的Web Worker中执行。主线程设置超时计时器,若Worker在规定时间内未返回结果,主线程会调用worker.terminate()强制终止,从而避免页面卡死,并标记该正则为"疑似灾难性回溯"。
JavaScript引擎使用JIT(即时编译)优化频繁执行的代码。预热运行可以让JIT编译器识别热点代码并进行优化,使得后续计时更准确反映稳态性能,而非包含首次编译开销的冷启动性能。
是的,原子组(如(?>a+))和占有量词(如a++)在匹配后不会释放已匹配的字符,从而阻止回溯。但遗憾的是,JavaScript原生不支持这两种语法。在JS中需要通过重构正则结构来避免过度回溯。
设定FCP、LCP、CLS等指标值,模拟计算PageSpeed Insights得分估算。
加载大量DOM元素,对比启用和不启用content-visibility: auto时的渲染时间和滚动体验。
粘贴HTML代码,自动提取所有 <!--注释--> 内容,方便查看遗留信息。
输入 origin trial token,解析出启用的特性、域名和过期时间。
设置项目开始日期,添加里程碑节点,自动生成带时间轴的横向进度图,简洁展示阶段计划。
输入事件名称与年代,自动生成美观的横向时间轴图,打印用于学习展示。
激活 forced-colors: active 模拟,观察页面在系统高对比度主题下的渲染效果。
生成使用CSS @property和counter实现的无JS翻页倒计时动效,复制即用。
粘贴HTML或URL,基于算法检测并抽取文章的主体内容,去除侧边栏和广告。
验证 Origin Trial 令牌的有效性与作用域,显示令牌启用的实验功能列表及过期时间。
将压缩的SQL语句按标准缩进美化,关键字高亮,兼容MySQL/PostgreSQL等方言。
选择两种开源许可证,并排显示全文,高亮关键差异条款,帮助选择合适许可证。
按时间点添加事件,生成美观的垂直或水平时间轴HTML/CSS代码。
提供代码评审和文档评审的通用检查项,标出等级并生成评审报告。
计算现值(PV)、终值(FV)、普通年金和永续年金的金额,调节利率和期数。
设定目标日期时,全屏显示剩余天时分秒,纯黑背景,适合大屏幕。
在线检测输入的文本是否为正反读都相同的回文,忽略标点、空格和大小写。
展示各种邮件客户端对CSS背景图片、VML背景的支持程度,附兼容代码。
实时显示当前页面可见状态,当切换标签页时记录时间并给出日志。
编写顶点和片元着色器代码,即时在 Canvas 上查看渲染效果,学习图形编程。
输入字体名或从列表选择,在示例文本上立刻看效果,获得@import代码。
为每个评分维度设定权重与分值,输入各维度得分,自动计算加权总分,用于项目评估。
获取显卡型号、WebGL 参数和扩展信息,展示 WebGL 指纹的独特性和隐私风险。
向指定 URL 发送不同 HTTP 方法的请求,显示响应状态码、头部和主体,学习 RESTful API。
屏幕颜色变化时尽快点击,测量从刺激到反应的时间,统计平均反应速度。
在一个隔离环境中渲染单个组件,调整 props 查看变化,类似于 Storybook 的轻量替代。
输入用户查询,测试 Dialogflow 代理的意图匹配、参数提取和回复。
播放左声道/右声道单独音频,检验耳机或音响接线。
回答关于身心灵各层面的问题,评估七大脉轮能量是否平衡。
短暂显示随机数字串,消失后凭记忆输入,逐步增加长度。