当我尝试使用Jcm中的站点使用正则表达式提取器提取大量数据时,我发现了一些奇怪的东西,即Jmeter需要很长时间(> 50分钟)
参考名称:dataId
RegEx使用:
的 <strong><a href="(.+?)=(.+?)&(.+?)">
模板:$2$
比赛号码:-1
- &gt;获得所有比赛
这个正则表达式在一个250行的HTML源页面上运行,因此可能在该页面上找到超过100个匹配表达式(正如我所说,我正在提取大量数据)
我在任务管理器中检查了Jmeter的CPU使用率,java.exe
我的电脑有一个 i5四核处理器,但是java.exe只使用其中一个核心而且需要很长时间(实际上超过一个小时)
如何加快提取数据的过程?实际问题在哪里?
答案 0 :(得分:2)
你的正则表达式太笼统了。尝试使用类似<strong><a href="([^"=&]+)=([^"=&]+)&([]^"=&+?)">
的内容。 Java在其正则表达式实现中使用回溯算法,并且在某些输入时可能会非常慢。
关于处理器加载,这是正常的。正则表达式实现不使用多个线程,因此它加载一个处理器核心。如果要利用完整的处理器能力,则必须以某种方式实现多线程。例如。并行处理4个不同的HTML页面。