java - 高效的内存利用?用字符串切换大小写

标签 java android

我想知道在我的测试应用程序中节省一些资源和内存的最佳方法是什么。 我知道创建对象会占用内存并降低应用程序的速度,并且在应用程序中,代码需要 String 值的 switch case。那么什么会更好呢?为所有字符串值分配一个整数标记并使用 switch case 或创建枚举器并直接使用 switch 的 if else 语句?

条目数 = 40-50。

最佳答案

I know that creating objects eats up memory and slows down the app ...

这种概括是有问题的:

是的,创建对象会消耗内存并花费时间,但它不一定会减慢应用程序的速度。这取决于创建对象的替代方法是什么。替代方案很可能会进一步降低应用程序的速度。

即使假设“创建对象”版本比替代版本使用更多资源,差异也很可能不会显着。

您在这里所做的似乎是过早的优化。我的建议是:

  • 让 JVM 处理优化(无论如何它可能比你做得更好),
  • 将任何手动优化留到以后进行,并且只有在应用的测量性能确实保证时才进行优化,并且
  • 使用 CPU 或内存分析器来指导您在代码的哪些部分进行手动优化可能会产生良好的返回。

至于您的用例的细节,目前尚不清楚最有效的解决方案是什么。这取决于字符串的形成方式、switch 语句中有多少个分支等等。如果不使用实际输入数据分析应用程序,就很难预测。

您没有提到的第三个选项是使用 enum 而不是 Stringint。这比使用预填充的 HashMap 或其他东西实现 Stringint 的映射要整洁。

关于java - 高效的内存利用?用字符串切换大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9683260/

相关文章:

android - 如何解决工作管理器上的多实例问题?

java - 如何根据年中的某天获取月份

java - 将 JAR 文件转换为可执行文件是否可以确保其分发?

java - @Valid 注解应用于 MultipartFile 对象时被忽略

android - 如何使通知 Intent 恢复而不是新的 Intent ?

java - 从 Realm 数据库中的清除中排除列

java - Selenium 2 : Detect content type of link destinations

java - 如何在 JavaFX 8 中禁用隐藏组合框弹出窗口?

android - 数组上的函数 average() 不起作用

java - 无法将日期从字符串写入 TextView