【问题标题】:Time to read an xml file是时候读取一个 xml 文件了
【发布时间】:2013-01-22 03:16:05
【问题描述】:

我想知道解析一个 XML 文件所花费的时间。我正在使用 SAX 解析器。我不想知道花了多长时间(解析完成后),因此我不能使用 System.nanoTime() 或 System.currentTimeMillis()

如何提前预估解析所用的时间? (可能基于文件的大小)

【问题讨论】:

  • 自己阅读文件并添加一些时间来计算花费的时间。
  • 是的,这就是我现在所拥有的,读取文件并检查花了多长时间,但我想知道是否有任何分析器或任何东西?

标签: java xml sax saxparser


【解决方案1】:

这是一个棘手的问题。简短的回答是:您无法提前确切知道需要多长时间。

您最好的选择可能是通过运行一些基准来估计需要多长时间,例如解析一个 1K 文件、一个 10K 文件、一个 100K 文件和一个 1MB 文件并在它们之间进行插值。 (假设 1MB 是一个合理的上限)

但是,此估算值仅在您的计算机上针对您的特定硬件/软件配置有效。您无法以有意义的方式对其进行概括。

【讨论】:

  • 除此之外,请记住,有时您的代码可能具有一些功能,具体取决于处理节点的增量数量。因此,在分析时请确保您的代码中没有 o(n) 或更多函数。解析 50,000 可能没问题,但节点越多,处理速度越低!
【解决方案2】:

您可以做的是,获取一个 1 MB 的样本文件并对其进行解析。记录时间如下:

int testcases = 10; // Configure it to find the average
for(int i=0;i<testcases;i++)
{
long startTime = System.currentTimeMillis();
// Call a method that performs parsing of the XML.
// Method Returns once parsing is done.

long endTime = System.currentTimeMillis();

long delta = endTime - startTime;
System.out.println("Average Time taken: " + delta);
}

通过以上,可以得出平均所用时间。

【讨论】:

    猜你喜欢
    • 2010-09-06
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2016-06-20
    • 1970-01-01
    相关资源
    最近更新 更多