java - 优化程序速度的一般方法

标签 java xml optimization performance google-search

就速度而言,用 Java 优化程序有哪些通用方法。我正在使用 DOM 解析器解析 XML 文件,然后将某些单词存储在 ArrayList 中,删除所有重复项,然后通过为每个单词创建 Google 搜索 URL 来拼写检查这些单词,获取 html 文档,找到更正的单词并将其保存到另一个 ArrayList。

任何帮助将不胜感激!谢谢。

最佳答案

为什么需要提高性能?根据您的解释,很明显这里的大瓶颈(或性能影响)将是IO,因为您正在访问 URL

这肯定会使您在数据结构或 XML 框架中所做的任何微小改进都相形见绌

这是一个很好的一般经验法则,您的大性能问题将涉及 IO。够幽默的,我此刻正在等待数据库查询以批处理方式返回。它已经运行了将近一个小时。但是我欢迎任何对我的 XML 解析库的改进建议!

以下是我的一般方法:

  • 延迟 (IO) 的角度来看,您的程序是否执行任何明显昂贵的任务?您是否有足够的日志记录来查看这是延迟的地方(如果显着)?

  • 您的程序是否容易发生锁争用(即它是否可以等待,什么也不做,等待某些资源“空闲”)? 也许您正在锁定整个 Map,同时对要存储的值进行昂贵的计算,从而阻止其他线程访问该 map

  • 是否有一些明显的算法(可能用于数据匹配或排序)可能具有较差的特性?

  • 运行分析器(例如 jvisualvm,它随 JDK 本身一起提供)并查看您的代码热点。 JVM 将时间花在哪里?

关于java - 优化程序速度的一般方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4199425/

相关文章:

java - 从 ISO **数字** 货币代码中查找 CurrencyUnit

java - 通过套接字连接进行通信 :

java - 安卓工作室 : How to prevent up button in toolbar from pushing child view to the right?

optimization - 常用优化规则

linq - 返回 IOrderedEnumerable<T> 而不是 IEnumerable<T> 的方法是否有利?

java - Tomcat多线程部署使用ManagerServlet

java - sftp 和 ftp 的浏览目录选项

javascript - chrome 和 safari 中的 getElementsByTagName 问题

c# - 对象引用未设置为对象 xml C# 的实例并使用 C# 在 xml 文件中添加一些节点

c++ - 声明一个空的析构函数可以防止编译器调用 memmove() 来复制连续的对象