欢迎光临散文网 会员登陆 & 注册

【Getamped】热血英豪使用压缩kar对性能的影响

2022-10-14 18:02 作者:心のsky  | 我要投稿


前言

  近日,kar全系列文件解包工具ampedE(https://lrfasd.github.io/ampedE/)和kar全系列文件打包工具ampedP(https://lrfasd.github.io/ampedP/)均已发布,经初步性能测试,在无防护软件监测影响文件读取写入速度的情况下,使用十年前配置的电脑加载Windows7旗舰版操作系统:

  运行ampedE.exe提取conf文件夹内的系列kar文件及keel.dat、amped.kar、resource.kar(合计约1.76GB,72500个文件),无压缩时用时2分36秒,有压缩时用时1分23秒;

  运行ampedP.exe将已提取的conf文件夹内的系列kar文件及keel.dat、amped.kar、resource.kar(合计约1.76GB,72500个文件)重新打包,无压缩时用时1分02秒,有压缩时用时2分05秒。

  此处我们发现一个无问题,解包时,因为有压缩的文件比无压缩文件读取还要多一道解压缩程序,需要一定时间的运算,在写出包内文件耗时相同的情况下,全部解包实际用时反而更少,可初步判断是文件读取时有压缩的文件比无压缩文件小很多,此处硬盘读取时间差大于解压缩的耗时。那么游戏中相关kar文件使用压缩形式存储,是否会对游戏性能提升有所帮助呢?下面我们来测试看看。


对更新耗时的影响

  今天是2022年10月14日,星期五,刚好有更新,不如先测试一下无压缩和有压缩各自的更新耗时。我们知道该游戏的更新是将resource.kar和amped.kar完全解包并重新打包的过程,游戏经过二十年的发展,包文件越来越大,更新耗时也越来越长。

  为了防止什么卫士什么管家等有关软件监测文件系统影响文件读取写入速度,首先全部关闭退出。

  将amped.kar、resource.kar和conf\setting.kar解包并启用压缩重新打包,复制游戏文件夹为副本0和副本1,替换副本1内相应文件为压缩kar。

  为了消除下载更新文件对更新耗时的影响,先更新原游戏文件夹,更新即将完成时复制update文件夹内的两个更新文件,并分别复制于副本0和副本1对应位置。

  将副本0和副本1分别复制至3份,分别单独更新计算耗时,计算区间为“资源更新中”的提示开始至“请重新登陆”的提示出现。

  经统计,更新耗时分别如下:

  无压缩第1次130秒,第2次128秒,第3次126秒,平均128秒;

  有压缩第1次157秒,第2次155秒,第3次153秒,平均155秒;

  即无压缩和有压缩更新耗时比为5:6,而并非ampedE、ampedP打包解包时间和之比约为1:1。分析原因,游戏更新时是在系统的temp文件夹内创建文件副本,从源文件和更新文件中读取文件予以合并到副本文件,再将副本文件替换源文件,对比ampedE、ampedP的解包打包过程,唯一能影响时间差异的只有解压和压缩的性能差异,毕竟类库有所不同,而一般解压的速度远大于压缩,因此推测是压缩写入占用更长时间。不过更新一周才一次,所以这不是我们研究的重点。

对游戏运行的影响

  加下来测试从开启游戏到界面加载完成的耗时差异,计算区间为运行exe到界面开启账号密码输入框完全显示。

  经统计,启动耗时分别如下:

  无压缩第1次22秒,第2次20秒,第3次19秒,第4次20秒,第5次19秒,平均20秒;

  有压缩第1次20秒,第2次20秒,第3次20秒,第4次21秒,第5次19秒,平均20秒;

  即无压缩和有压缩启动耗时比为1:1,几乎无差异。分析原因,因为读取kar文件的文件头后,包内各文件都是按需读取,而每次读取的文件量不大,耗时差异也难以体现,如果以大批量读取如ampedE的效率推测,使用压缩kar读取效率应该更占优,但是考虑到类库差异,又无法实际证明,需要在实际游戏中多多体会可能才会有所不同。但可见的优点是,文件容量大大减小,这对目前文件容量上限2GB的kar文件来讲,在有新的解决方案前,启用压缩是个早晚的选择。



【Getamped】热血英豪使用压缩kar对性能的影响的评论 (共 条)

分享到微博请遵守国家法律