当我用户按下按钮时,我有一段逻辑会经常执行。然而,我有这样的想法:“如果我只是将这些信息存储在一个表中,并在需要时抓取它,而不是每次都计算它,也许会更有效。
那么我们开始吧:哪个进程消耗的处理时间/资源最少?
背景信息:对象数组平均可能有 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/