- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚看到this question关于在 Perl 中优化特定的正则表达式。我想知道我的机器可以做多少匹配,所以我尝试了以下简单的基准测试:
qr
预编译的正则表达式/regex/
匹配 use 5.014;
use warnings;
use Benchmark qw(:all);
my $str = "SDZ";
my $qr = qr/S?T?K?P?W?H?R?A?O?\*?E?U?F?R?P?B?L?G?T?S?D?Z?/;
say "match [$&]" if( $str =~ $qr );
my $res = timethese(-10, {
stdrx => sub { $str =~ /S?T?K?P?W?H?R?A?O?\*?E?U?F?R?P?B?L?G?T?S?D?Z?/ },
qr_rx => sub { $str =~ $qr },
});
cmpthese $res;
match [SDZ]
Benchmark: running qr_rx, stdrx for at least 10 CPU seconds...
qr_rx: 10 wallclock secs ( 9.99 usr + 0.01 sys = 10.00 CPU) @ 1089794.90/s (n=10897949)
stdrx: 11 wallclock secs (10.58 usr + 0.04 sys = 10.62 CPU) @ 1651340.11/s (n=17537232)
Rate qr_rx stdrx
qr_rx 1089795/s -- -34%
stdrx 1651340/s 52% --
$str =~ /regex/
比使用
$str =~ qr
快约 50% .我期待相反的结果。
If a regex literal has no variable interpolation, Perl knows that the regex can’t change from use to use, so after the regex is compiled once, that compiled form is saved (“cached”) for use whenever execution again reaches the same code. The regex is examined and compiled just once, no matter how often it’s used during the program’s execution.
$str =~ $qr
比较慢。 (老实说,“较慢”不是正确的术语,因为我们谈论的是几微秒...... :))
Precompilation of the pattern into an internal representation at the moment of qr() avoids the need to recompile the pattern every time a match /$pat/ is attempted.
qr
当他们开始学习时。
最佳答案
正则表达式模式在编译时编译,如果它们不插值。 qr//
中的正则表达式都没有运算符也不是 stdrx
中匹配运算符中的那个插值,所以两者都是在编译时编译的。
在 qr_rx
中花费的额外 30μs测试用于“编译”第三个正则表达式:qr_rx
中匹配运算符中的那个.别忘了 $_ =~ $re
$_ =~ m/$re/
的缩写.现在,当整个模式由内插预编译正则表达式组成时,实际上不会发生编译,因为这种情况是专门处理的,但显然仍然需要一些时间来诱使匹配操作使用预编译正则表达式。 (也许它需要克隆它?)
关于perl - 为什么使用 qr 预编译的正则表达式比使用常量正则表达式慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43009931/
您是否正在与应用程序中的性能瓶颈作斗争?不要再观望了!Visual Studio 2022 在其性能分析套件中引入了 Meter Histogram(直方图)功能,为您提供了前所未有的分析和可视化
可能您还没有听说过,GitHub 刚刚宣布了 Copilot Free(免费版)!好消息是:您现在已经可以在 Visual Studio 中开始使用 Copilot Free 了。它现在已经可用了
您是否曾经希望能够在调试时快速测试集合或数据集上的不同查询?您希望节省时间并避免仅仅为了检查数据而编写代码吗?如果您的回答是肯定的,那么您一定会喜欢 Visual Studio 调试器中新的可编辑
任何 Web、桌面或移动开发人员都经常使用图像。你可以从 C#、HTML、XAML、CSS、C++、VB、TypeScript 甚至代码注释中引用它们。有些图像是本地的,有些存在于线上或网络共享中
您是否曾经难以理解一个提交在做什么或者为什么要做?在审查或协作代码更改时,您是否希望有更多的清晰度和上下文?如果您的回答是肯定的,那么您会喜欢 GitHub Copilot 为您所做的——生成提交
Visual Studio 订阅(无论是专业版还是企业版)提供的不仅仅是软件使用权;这是一个全面的工具包,旨在显著提高您的开发能力和职业发展。这些订阅每年可以为您节省数千美元,提供各种服务,从每月
随着最近 Visual Studio 的资源管理器的改进,开发人员将得到一种全新的享受!我们非常激动地宣布重新设计的 Visual Studio 资源管理器,相信我们,它将改变游戏规则。 在
委托在现代代码中无处不在;委托是一种类型,它表示对具有特定参数列表和返回类型的方法的引用。开发人员使用委托将方法作为参数传递给其他方法。您可能熟悉的一个例子是事件处理程序。处理程序是可以通过委托调
来自Sergey Tepliakov的 https://sergeyteplyakov.github.io/Blog/csharp/2024/06/14/Custom_Task_Schedule
GitHub Copilot 是一个改变游戏规则的人工智能助手,可以彻底改变您在 Visual Studio 中的编码流程。在我们的视频系列中,Bruno Capuano 探讨了这个智
在17.10预览版2中,我们刚刚发布了预览支持,可以直接在 Visual Studio 的工作文件中查看 GitHub 和 Azure DevOps 的拉取请求注释。作为开发者社区中最受欢迎的 G
MSBuild 是 .NET 开发体验的基本组成部分,但它对新手和有经验的开发人员都具有挑战性。为了帮助开发人员更好地理解他们的项目文件,并访问需要直接编辑项目文件的高级功能,我们发布了一个实验性
通过使用代码覆盖率功能,您可以发现您的测试需要改进的地方,并使您的软件更加健壮和可靠。在这篇文章中,我们将介绍我们在 Visual Studio Enterprise 2022 中引入的 Code
GitHub Copilot 简介 GitHub Copilot 是一个新工具,可以帮助您在人工智能的帮助下更快,更智能地编写代码。它可以建议代码补全,生成代码片段,甚至为您编写整个函数。Git
序:最近看了一篇谷歌工程师总结自己十年来所学到的软技能,感觉说的很棒,特地翻译成中文,希望能分享给更多的人,原文内容非常多,计划分几篇翻译出来,个人的水平有限,感兴趣的朋友也可以进去看英文原文。原文地
本文为翻译 。 原文地址: 2023 State of Web Components: Today's standards and a glimpse into the future. 。
任何 Web、桌面或移动开发人员都经常使用图像。你可以从 C#、HTML、XAML、CSS、C++、TypeScript 甚至代码注释中引用它们。有些图像是本地的,有些存在于线上或网络共享中,而其
在 Visual Studio 2022 中,Web 开发人员的主要场景之一是使用 ASP.NET Core 创建 Web API。在 Visual Studio 2022 17.6 的最新预览
.NET 在数年前就在语言和库中添加了 async/await。在那段时间里,它像野火一样蔓延开来,不仅在 .NET 生态系统中,而且在无数其他语言和框架中被复制。在 .NET 中也看到了大量的
原文 | Stephen Toub 翻译 | 郑子铭 Mono 到目前为止,我一直提到 "JIT"、"GC "和 "运行时&quo
我是一名优秀的程序员,十分优秀!