我有一段旧代码,用于在字符串中执行查找和替换标记。
它接收地图的from
和to
对,遍历它们并为每个对,遍历目标字符串,将查找from
使用indexOf()
,并取代它的价值to
。它完成对的所有工作,StringBuffer
并最终返回String
。
我用以下代码替换了该代码:replaceAll("[,. ]*", "");
并且运行了一些比较性能测试。
比较1,000,000
迭代时,我得到以下信息:
旧代码:1287ms
新代码:4605ms
长3倍!
然后,我尝试用3个调用替换它replace
:
replace(",", "");
replace(".", "");
replace(" ", "");
结果如下:
旧代码:1295
新代码:3524
长2倍!
知道为什么replace
而且replaceAll
效率如此低下吗?我可以做些什么使它更快吗?
编辑: 谢谢所有的答案-主要的问题确实是[,. ]*
没有做到我想要的。将其更改为[,. ]+
几乎等于非基于Regex的解决方案的性能。使用预编译的正则表达式虽然有所帮助,但却是微不足道的。(这是一个非常适合我的问题的解决方案。
测试代码:
用正则表达式替换字符串:[,。] *
用正则表达式替换字符串:[,。] +
用正则表达式替换字符串:[,。] +和预编译模式
不幸的是,这段代码运行速度比“os.walk”慢,但为什么呢? 会不会是“为”循环导致它运行缓慢? 类似于“os.walk”的代码:(“os.walk”函数完成它的功能) 注意:我写信是为了提高自己!: 例如: 2秒内结束: 在0.5秒内:
问题内容: 我有一个简单的任务:计算每个字母在一个字符串中出现的次数。我已经使用了它,但是在一个论坛上我看到了使用/比每个字母都要慢得多的信息。我认为它只能在字符串中进行一次遍历,而解决方案则必须遍历该字符串四次(在这种情况下)。为什么这么慢? 问题答案: 允许您计算任何可哈希对象,而不仅仅是子字符串。两种解决方案都是-time。您的测量结果表明,迭代和散列单个字符的开销大于运行4倍。 可以 使用
问题内容: 我正在使用bigquery.go库。 在调查某些性能时,我发现我的导出(从.csv到GCS)作业(仅导出作业)从客户端启动平均需要60秒,而从WebGUI启动的同一作业大约需要20秒。这可能是什么原因? 代码如下: 问题答案: WEB UI通常具有轮询机制来检查作业何时完成,因此您可能会看到更长的时间。通常,导出到GCS的文件在WebUI中显示的时间早于作业实际完成的时间。 为了确保并
问题内容: 我正在编辑从tesseract ocr获得的一些电子邮件。 这是我的代码: 但是输出不正确。 输入: 输出: 但是,当我在每次替换后将结果分配给新的String时,它都能正常工作。为什么在同一字符串中连续分配不起作用? 问题答案: 您将在Javadoc中的String.replaceAll()中注意到,第一个参数是正则表达式。 句点()和管道()以及花括号()都有特殊的含义。您需要对它
我已将自动完成功能应用于两个。为此,我使用了自动完成计算器。我观察到它的速度减慢到我甚至无法输入一个字符的程度。有什么解决办法吗? 谢谢
DokuWiki 是一个针对小公司文件需求而開發的 Wiki引擎。DokuWiki是用程序设计语言PHP开发的并以GPL 2发布。DokuWiki基于文本存储,所以不需要数据库,其数据文件在Wiki系统外也是可读的。DokuWiki的功能齐全,支持UTF-8,最新版支持中文链接。能够单独编辑页面中的某个章节,能够自动生成目录,适合中小企业、个人使用,用作资料归档、指南、读书笔记等。DokuWiki