如何减少Java执行程序的时间?

时间:2017-09-11 22:19:47

标签: java apache-poi pdfbox

我在这个主题中有点新意,我想减少程序执行的时间,我不能在客户端发布任何政治代码,但我会尽量做到最详细的可以。

我在Java上有这个程序并使用下一个库:

  1. pdfbox 1.8.2
  2. poi 3.7
  3. 和常见的,java util,io,regex和swing。

    输入是:  1."妈妈PDF"文件  2. excel原始文件

    输出:

    1. childs pdf files
    2. 输出优于信息
    3. 该程序从pdf文件中获取信息并放入excel文件中。 pdf文件可能有数百页。该程序所做的是阅读" mom PDF" 文件,搜索"单词" ,如果这个单词在该页面创建了一个"孩子的pdf"只有该页面的文件,提取所需信息,打开excel文件,记下从该页面提取的信息,关闭excel文件并关闭" child pdf" 。当正则表达式在" mom PDF" 中找到"单词" 时,此操作会重复多次。程序结构合理在3个街区。

      • 设置栏。当我准备文件路线并初始化它们时
      • 提取块。当程序读取pdf文件并搜索excel文件中需要的信息时
      • excel块。当程序打印提取的信息时 从PDF到excel文件。

      尝试缩短时间,是将三个代码块分开,只有一个主类,然后从那里调用块的方法,它起初工作但是经过一些测试后没有。执行时间太长,我想知道是否有办法缩短它。

      该程序的先前版本是从头开始创建放置信息的excel文件,但我需要输入一个输入文件,因为它具有需要遵循的特定格式。这个以前的版本更快。

      非常感谢你。

1 个答案:

答案 0 :(得分:1)

通常,它是导致大多数性能问题的一段代码。在工业中,已建立的做法是在决定是否需要下一次分析迭代之前消除该瓶颈。通过不考虑可能是代码的次优部分而不是查看导致减速的原因来节省很多麻烦。通常人们无法通过查看代码来猜测。只需在采样器模式下运行visualvm(标准JDK的一部分),制作一个快照,然后查看堆栈跟踪。在确定了一个方法之后,最懒的方法是仅缓存数据(例如,解析子pdf的结果可能存储在hashmap中)