我正在为XML文件转换器创建一个工具。 XML文件的模式正在发生变化,该工具将采用格式为A的xml文件并将其转换为格式B.(模式结构发生了巨大变化)。
有没有办法计算文件转换所需的时间?有没有标准的方法/公式?(取决于文件的大小等)
(文件大小最高可达4GB)
答案 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)
识别几个大小类,例如。
为每个大小类解析几个随机示例文件,获取每个类的总时间并除以文件数量以获得平均值。
现在,将您计算出的数字乘以每个类中的文件数量,然后应用于其余文件。
需要最低限度的控制并为您提供合理的估算。
通过对文档类型的一些了解,您还可以对其进行分组,因为不同的文档结构往往需要不同的时间。
实时进度
这是一个非常巧妙的技巧,可以使用,覆盖您将使用的任何读者类,您可以在记录所请求的数量时转发任何读取调用。鉴于你知道文件的大小,你现在有办法显示进度(即百分比,或总数的一部分)。
由于解析通常需要花费大部分时间进行xml处理,因此这可以很好地指示它的工作速度。
答案 2 :(得分:0)
首先,确保您的转换是线性的:也就是说,输入的大小加倍可以使时间长度加倍。 (如果它不是线性的,那么处理4Gb文件并不容易)。
然后测量速度:比如说10Mb /秒。您实现的速度将在很大程度上取决于转换的性质,编码效率以及您使用的技术。
然后从文件大小推断。
如果您需要处理高达4GB的大小,那么最大的问题是您需要使用流式转换(一种不能将整个文件保存在内存中)并且这(a)限制了您对技术的选择(很少) XSLT处理器提供流媒体功能,而那些花费很多钱的处理器,以及(b)使转换变得更加难以编码。