【问题标题】:Am I babying the platform/hardware?我是在宠爱平台/硬件吗?
【发布时间】:2011-01-18 19:01:30
【问题描述】:

我不知道我是否尊重和礼貌地对待用户,或者我是否以将手机视为瓷娃娃的名义不必要地妨碍了我的应用程序的实用性。

我在 Android Market 中有一个成功的应用程序。一个主要功能是它记录用户正在得分的游戏的运动统计数据。当前的详细程度相当基本:每个玩家一行,每个基本统计数据一个字段。但是,如果我记录额外的信息,我可以显着增加应用程序的细节和有用性,将这些信息扩展到大量的关系表,并且可以想象成千上万的记录。

我的问题是,这是一件负责任的事情吗?到目前为止,我一直回避它,认为“它只是一部手机”和“它只是 SQLite”,但我从未真正考虑过这是否是持有的正当理由重新做一些我不会再考虑在网络或桌面应用上做的事情。

因此,在存储和筛选数据库记录方面,期望手机应用程序执行多少数据(我知道非常可量化)是合理的?

编辑: 需要明确的是,我不是在简单地谈论添加更多字段,因为我知道这样做的影响是微不足道的。我说的是从“该球员有 5 个单打和 3 个本垒打”的详细程度到存储有关每个球的信息,这些信息包括每个击球手,导致 5 个单打和三个本垒打。显然,这将需要额外的表,并且可能需要大量记录。

【问题讨论】:

  • 最新的手机都有 1 ghz 处理器、512 内存、8-16 gigs 存储选项。如果写得好,我不认为你的体育数据会扼杀它。

标签: android performance sqlite


【解决方案1】:

对于我在 CMU 的硕士论文项目,我编写了一个 Android 应用程序,该应用程序在一天内用 sqlite 收集了大约 300mb(主表中的 250 万行)数据。它在大约 10 小时内耗尽了手机的电池,CPU 利用率约为 50%,但这与数据没有太大关系。我们正在对通过 72Hz 蓝牙传入的生理数据进行在线学习。去掉数学密集型部分后,手机在服务运行时非常好用。而这10个小时主要是由于蓝牙连续运行。如果没有蓝牙,我们可以获得大约 16-18 小时的持续正常运行时间。这些天我什至在 HTC Desire 上都没有。

这是在 G1 上

我认为如果你保持在兆字节或低 10 兆字节,你就可以了。只要你有一个好的设计并且不要在主线程中进行昂贵的查询。 SQLite 可以很好地处理格式良好的查询,并且将数据转储到其中非常快。

[edit:] 只是想到了一些事情:为什么不提供带有附加字段的应用程序的第二个版本?更多的计算显然意味着更多的电池消耗,所以我会给用户一些选择。但我的直觉是性能猪不会真正引人注目。

【讨论】:

  • 或者只是一个设置而不是一个单独的应用程序。未执行的代码不会消耗任何资源:)
  • 感谢您的洞察力。我认为这确实让我对加强一些感觉更好。不过,至于带有附加字段的第二个版本:这与更多字段无关,因为我知道这不会产生影响。它更多的是关于存储的详细信息级别,添加此附加详细信息的适当方法将是附加表,其中包含有关产生当前正在收集的统计信息的事件的信息,如果这有意义的话。附加字段,我没有问题。我只是想确保我不会通过添加复杂层来降低性能/电池。
【解决方案2】:

听起来 SQLite 可以满足您的需求。我会毫不犹豫地突破它的极限。这是一个实施得非常好的产品,应该能够处理您所描述的内容。如果您的应用程序处理大量数据(超过 100-200MB),您可能需要考虑Berkeley DB。 Berkeley DB 支持 SQLite3 API 并提供额外的数据管理功能,提供比原生 SQLite 更好的性能、可扩展性和可靠性,尤其是在处理更大的数据集时。 - 戴夫

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多