计算XML文件转换所用的时间

时间:2012-12-07 04:45:28

标签: java xml parsing

我正在为XML文件转换器创建一个工具。 XML文件的模式正在发生变化,该工具将采用格式为A的xml文件并将其转换为格式B.(模式结构发生了巨大变化)。

有没有办法计算文件转换所需的时间?有没有标准的方法/公式?(取决于文件的大小等)

(文件大小最高可达4GB)

3 个答案:

答案 0 :(得分:0)

您可以做的是在转换代码的开头以miliiseconds存储系统时间

在转换代码完成后,再次以毫秒为单位取系统时间并减去它们以获得转换所花费的时间(以毫秒为单位)

public void yourConversionMethod(){
      //start of method
      long start = System.currentTimeMillis();
      ....
      ....
      //your conversion code
      ...
      ...
      //end of method
      long end = System.currentTimeMillis();

      long conversionTime = end - start;
}

答案 1 :(得分:0)

识别几个大小类,例如。

  • < 100M
  • < 1G
  • < 4G

为每个大小类解析几个随机示例文件,获取每个类的总时间并除以文件数量以获得平均值。

现在,将您计算出的数字乘以每个类中的文件数量,然后应用于其余文件。

需要最低限度的控制并为您提供合理的估算。

通过对文档类型的一些了解,您还可以对其进行分组,因为不同的文档结构往往需要不同的时间。

实时进度

这是一个非常巧妙的技巧,可以使用,覆盖您将使用的任何读者类,您可以在记录所请求的数量时转发任何读取调用。鉴于你知道文件的大小,你现在有办法显示进度(即百分比,或总数的一部分)。

由于解析通常需要花费大部分时间进行xml处理,因此这可以很好地指示它的工作速度。

答案 2 :(得分:0)

首先,确保您的转换是线性的:也就是说,输入的大小加倍可以使时间长度加倍。 (如果它不是线性的,那么处理4Gb文件并不容易)。

然后测量速度:比如说10Mb /秒。您实现的速度将在很大程度上取决于转换的性质,编码效率以及您使用的技术。

然后从文件大小推断。

如果您需要处理高达4GB的大小,那么最大的问题是您需要使用流式转换(一种不能将整个文件保存在内存中)并且这(a)限制了您对技术的选择(很少) XSLT处理器提供流媒体功能,而那些花费很多钱的处理器,以及(b)使转换变得更加难以编码。