我正在为 XML 文件转换器创建一个工具。XML 文件的架构正在更改,该工具将采用格式 A 的 xml 文件并将其转换为格式 B。(架构结构发生了巨大变化)。
有什么方法可以计算文件转换所需的时间吗?有没有标准的方法/公式?(取决于文件的大小等)
(文件大小最高可达 4GB)
您可以做的是在转换代码开始时以毫秒为单位存储系统时间
并在转换代码完成时再次以毫秒为单位获取系统时间并减去它们以获得转换所花费的时间(以毫秒为单位)
public void yourConversionMethod(){
//start of method
long start = System.currentTimeMillis();
....
....
//your conversion code
...
...
//end of method
long end = System.currentTimeMillis();
long conversionTime = end - start;
}
确定几个尺寸等级,例如。
为每个大小类解析几个随机示例文件,计算每个类的总时间,然后除以文件数量以获得平均值。
现在,将您计算的数字乘以每个类中的文件数量,并将其应用于其余文件。
需要最少的控制并为您提供合理的估计。
通过对文档类型的一些了解,您还可以将它们分组,因为不同的文档结构往往需要不同的时间。
实时进度
这是您可以使用的一个非常巧妙的技巧,通过您自己的实现覆盖您将使用的任何读取器类,该实现在记录请求的数量时转发任何读取调用。鉴于您知道文件的大小,您现在有一种显示进度的方式(即百分比或占总数的一部分)。
由于解析通常是 xml 处理这个花费最多的时间,这应该可以很好地说明它的工作速度。
首先,确保你的转换是线性的:也就是说,输入的大小加倍,时间长度加倍。(如果它不是线性的,那么处理 4Gb 文件就不容易了)。
然后测量速度:比如 10Mb/sec。您实现的速度在很大程度上取决于转换的性质、编码的效率以及您使用的技术。
然后从文件大小推断。
如果您需要处理高达 4GB 的大小,最大的问题是您需要使用流式转换(不会将整个文件保存在内存中),这 (a) 限制了您对技术的选择(很少有 XSLT 处理器提供流功能,以及那些确实需要花钱的功能),并且(b)使转换变得更加难以编码。