Mar*_*her 6 java performance enums android
之前已经问过部分内容,但我还没有找到可靠证据和/或决定性答案的方法.
在Bundle中传递围绕Android的信息时,使用字符串,枚举或静态最终整数可以观察到(如果有的话)性能的增加/减少?
举一个用例示例,我的应用程序中有几次加载并显示某个片段.每次加载片段时,Bundle都会传递给它,其中包含两个参数:显示数据的ID,以及指示如何显示它的模式.我有一个自定义状态寻呼机适配器设置完成所有提升,但问题的关键在于:这些(如果有的话)将提供任何性能增益/损失:
Bundle args = new Bundle();
args.putInt("ID", 1);
// method 1
args.putString("MODE", "Mode1");
// method 2
args.putSerializable("MODE", ModeEnum.Mode1);
// method 3
public static final int MODE_1 = 1; // this would be elsewhere in a constants class
args.putInt("MODE", MODE_1);
Run Code Online (Sandbox Code Playgroud)
在片段中,模式在几个地方被检查,所以我关心三个选项中的哪一个更有效地存储在包中,并且在另一端比较更有效.
任何建议,观察或经验将不胜感激!
好的,所以我在网上做了一些研究,发现信息含糊不清,不可靠或矛盾 - 简而言之,我没有找到答案.所以相反,我设置了一个小应用程序来实际测试这个.
该应用程序将一个活动中的200个项目从一个活动传递到另一个活动,然后将这些值用于比较和查找数组和地图的混合.然后再重复9,999次.
随着这个过程的10k转,对于这三种方法中的每一种都运行了几次,我得出了一个结论:
你选择哪一个并不重要.
在性能上的差异是很小的,我的意思是微乎其微.大部分时间里,弦乐队以微弱的优势输掉了比赛,但是整体和队型都是顶级的竞争者,无论如何有时弦乐都击败了他们.
内存消耗的差异也很小.只要您的字符串值不是文本的段落,这些差异实际上太小而无法关注.我们说的是增加了几个百分点.
摘要:
当然,如果您的应用程序始终传递数千个Bundle值*,则可能需要使用整数或枚举(以您的代码库最自然的方式)对其进行优化.但除此之外,您获得的任何增加都不值得创建它所需的努力.
*如果您这样做,您可能已经知道这一点,或者您的应用程序基础架构出现了问题!
| 归档时间: |
|
| 查看次数: |
1010 次 |
| 最近记录: |