Android性能:无用的全局变量与继承

Android性能:无用的全局变量与继承,第1张

概述假设我有一个对象A和B扩展了A.B具有与A不相关的全局变量(一个数组和一些计数器).由于显式转换的成本很高(我不确定多少),从纯粹的性能角度来看,仅创建A类并仅在需要时才创建数组会更好,这样我就不必进行转换了吗?我想问题是,即使未使用对象的全局变量,它也不会付出任何代价吗?编

假设我有一个对象A和B扩展了A.
B具有与A不相关的全局变量(一个数组和一些计数器).

由于显式转换的成本很高(我不确定多少),从纯粹的性能角度来看,仅创建A类并仅在需要时才创建数组会更好,这样我就不必进行转换了吗?

我想问题是,即使未使用对象的全局变量,它也不会付出任何代价吗?

编辑:显然,忘记添加最重要的功能.

解决方法:

近年来,继承通常被视为代码嗅觉,因为它会导致不同的问题:
https://dzone.com/articles/is-inheritance-dead

如果用纯粹的性能术语来说,一个空数组在RAM中大约需要8个字节(4个字节的存储长度和4个字节的引用,但它与平台有关:How much space does an array occupy?).因此,即使您有一千个这样的对象,一个数组字段在RAM中也将占用大约1_000 * 8字节〜8 KB.

您可能知道,当今的电话通常包含> 1 GB的RAM.但是,请不要忘记,您的应用程序通常可以占用60到192 MB的RAM(Detect application heap size in Android).

无论如何,不​​计算要添加到班级中的每个小字段就足够了.

但是,回到我的第一句话,我建议您考虑使用合成而不是继承来解决问题,如Effective Java中所建议

更新资料
关于性能,我建议您阅读以下主题:The performance impact of using instanceof in Java您确定需要这种类型的过早优化吗?还是更多的是理论问题而不是实际问题?

总结

以上是内存溢出为你收集整理的Android性能:无用的全局变量与继承全部内容,希望文章能够帮你解决Android性能:无用的全局变量与继承所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1120905.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存