java - 每次计算逻辑、访问数据库、文件或 HashMap 是否更快?

标签 java android performance

当我用户按下按钮时,我有一段逻辑会经常执行。然而,我有这样的想法:“如果我只是将这些信息存储在一个表中,并在需要时抓取它,而不是每次都计算它,也许会更有效。

那么我们开始吧:哪个进程消耗的处理时间/资源最少?

背景信息:对象数组平均可能有 10 个项目(尽管该对象的成员变量之一是另一个最多包含 4 个项目的数组)。此外,每次该对象发生更改时,它都会发送到 C++ 中的 App Engine,并且按钮纹理会在前端发生更改。此 App Engine 不断运行高优先级进程,并且不会因 UI 线程中的大量工作而减慢速度。

此外,如果要创建任何数据库、文件、HashMap 等,它将包含大约 100 行整数。 (HashMap 或许能够将其中一些压缩为公共(public)键/值对)

1)(不是一个糟糕的解决方案,但我觉得它在上下文中是多余的,并且可以改进)

    if (x % 3 == 0) {
        for (int i = 0; i < objectArray.size(); i+= 3) {
            objectArray.get(i).y = FOO_VALUE;
        }
    } else if (x % 3 == 1) {
        if (i % 3 == 0) {
            if (i + 7 <= x) {
                i += 3;
            } else if (i + 2 <= x) {
                i += 2;
            }
        } else if (i % 2 == 0) {
            if (i + 2 <= x) {
                i += 2;
            }
        }
    } else { // == 2
        if (i % 3 == 0) {
            if (i + 3 <= x) {
                i += 3;
            }
        } else
            i += 2;
    }

(我还没有写这些,所以请忍受我的伪代码)

2) 通用文件(可能 O(n) 访问)

  • 获取文件。
  • 从文件中获取第 x 行
  • 相应地设置对象数组。

3)本地静态数据库(我觉得这访问数据相当慢)

  • 获取本地静态数据库的 Dao 对象
  • 发起简单查询
  • 存储结果
  • 相应地设置对象数组

4) HashMap(创建时间可能为 O(n),但访问时间为 O(1)。每次应用启动时都必须实例化)

  • 在应用初始化时设置 HashMap
  • 获取(x)
  • 相应地设置对象数组

最佳答案

这实际上取决于您的使用情况。一般来说,用户的本地电话存储非常昂贵,并且您不希望在其中填充不必要的数据。另一方面,如果您认为您的按钮会被用户频繁按下,那么 HashMap 可能是更好的选择。但是,每次实例化 HashMap 都会影响内存使用情况,具体取决于大小 - 您可以对 HashMap 进行延迟实例化。否则,除非你正在做一些繁重的科学计算,否则每次计算逻辑可能是你最好的选择。

关于java - 每次计算逻辑、访问数据库、文件或 HashMap 是否更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59297781/

相关文章:

在 javafx.scene.media.MediaPlayer.init 处使用媒体播放器时出现 Java FX 空指针异常

java - 在 Android 中读取和显示大格式文本文档

android - 如何在不使用 "setImageBitmap()"的情况下加载带有 png 文件的 ImageView?

javascript - 使用 javascript 通过 appium 进行 Android 应用程序健全性测试

android - 为什么我找不到一种简单的方法来对发布构建类型的 APK 运行仪器测试?

performance - MD* 或 SHA-* 中是否有任何 "out of band"哈希值?

java - 从 XML Schema 数据类型转换为 Java int

java - 识别 session 超时

c - SSE SIMD 代码中的性能问题

mysql - Nodejs Mysql 优化查询