当前位置:  开发笔记 > 前端 > 正文

enum vs android @Intdef - 哪一个更好地优化

如何解决《enumvsandroid@Intdef-哪一个更好地优化》经验,为你挑选了2个好方法。

我知道,当将常量与枚举进行比较时,常量会占用较少的空间并且可以是原始的.我正在研究 android中的@Intdef注释,有人可以告诉我它是否更好的存储使用@Intdef vs enum.是否现在建议在android中放置枚举并尽可能使用@intdef前进?可以@Intdef做多态,我怀疑吗?

从android文档中关于内存开销:

枚举通常需要的内存是静态常量的两倍多.你应该严格避免在Android上使用枚举.

user3259330.. 22

@Intdef显然更有效率,它只具有静态最终整数的零权重,它是所有编译时指令.枚举是类,如链接中提到的那样有一个足迹.@Intdef为您提供枚举的最基本功能,即值验证,而不是枚举的其他功能,如自动字符串转换.

许多Android文档都是陈旧的,这很可能就是其中之一.早在android的早期阶段,每一点都计算在内,但现在设备的功能更强大.我个人会根据设计要求选择这两个选项,而不是太高效.此外,一些这些更高级的注释的语法不能使干净易读的代码,所以不是那里的粉丝.但是,如果情况需要良好的旧静态注入,@ Intdef会以牺牲视觉混乱为代价为您提供一些保护.



1> user3259330..:

@Intdef显然更有效率,它只具有静态最终整数的零权重,它是所有编译时指令.枚举是类,如链接中提到的那样有一个足迹.@Intdef为您提供枚举的最基本功能,即值验证,而不是枚举的其他功能,如自动字符串转换.

许多Android文档都是陈旧的,这很可能就是其中之一.早在android的早期阶段,每一点都计算在内,但现在设备的功能更强大.我个人会根据设计要求选择这两个选项,而不是太高效.此外,一些这些更高级的注释的语法不能使干净易读的代码,所以不是那里的粉丝.但是,如果情况需要良好的旧静态注入,@ Intdef会以牺牲视觉混乱为代价为您提供一些保护.


看看Proguard优化`class/unboxing/enum`.http://proguard.sourceforge.net/manual/optimizations.html

2> Gaket..:

除了之前的答案,我想补充一点,如果你使用的是Proguard(你绝对应该这样做以减小尺寸并混淆你的代码),那么你Enums将自动转换到@IntDef任何可能的地方:

https://www.guardsquare.com/en/proguard/manual/optimizations

类/拆箱/枚举

尽可能将枚举类型简化为整数常量.

因此,如果你有一些离散值,某些方法应该只允许这个值而不是同一类型的其他值,那么我会使用Enum,因为Proguard会让这个手册为我优化代码.

而这里是 如何使用枚举从杰克沃顿好的帖子,看看它.

作为一名库开发人员,我认识到应该完成的这些小优化,因为我们希望尽可能减少对消费应用程序的大小,内存和性能的影响.但重要的是要意识到抛弃迭代器分配与索引循环,使用HashMap与二进制搜索集合(如SparseArray),并在适当的情况下将enum放在公共API与整数值中是完全正常的.了解差异以做出明智的决定是重要的,除了这一个愚蠢的统计数据之外,视频几乎钉满了.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有