shwenzhang / AndResGuard

proguard resource for Android by wechat team

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

resources.arsc压缩会影响性能吗?

c1024 opened this issue · comments

commented

在知乎看到一篇文章(https://zhuanlan.zhihu.com/p/21543787) ,有一段话:
resources.arsc 在 APK 安装之后仍需要被频繁的读取,如果将它进行压缩,在每次读取前系统都必须进行解压的操作,从性能上考量这显然是得不偿失的。所以,赶紧摒弃通过压缩 resources.arsc 来给 APK 瘦身的方法吧。
请问resources.arsc压缩会影响性能吗?

先说我的观点:我觉得会有影响,但影响非常小。

具体的benchmark我没有做过,但我觉得resources.arsc的压缩最大的劣势是内存而不是运行时的速度。不压缩的resources.arsc系统可以使用mmap来节约内存的使用。一个app的资源至少被3个进程所持有(自己, launcher, system),所以mmap可以很大的节约内存使用。而压缩的resources.arsc会存在于每个进程中,可以使用dumpsys meminfo your.package.name来查看压缩与不压缩内存的差异。

你也可以选择不压缩resources.arsc,这里只需简单把这个选项从配置项的compressFilePattern列表中去掉即可。
PS:也欢迎大家做相关的benchmark

commented

微信也是因为内存问题所以不压缩的吗?

@gezihua 微信以前是压缩的,现在的状态我不太清楚。
总的来说google是不推荐压缩这个文件的,因为会更消耗系统资源。这个还是要自己来权衡。ref #233