【问题标题】:Android: Do database operations consume power?Android:数据库操作会耗电吗?
【发布时间】:2014-04-28 13:35:04
【问题描述】:

Android 应用 (Java) 需要定期更新相同的数据库记录。它可以每秒或每分钟完成。仅关于电池寿命,它是否有任何显着差异(例如将电池寿命缩短一半)每秒v/s 每分钟?

由于只涉及 CPU 和内存,我认为这没有区别,但我不确定。无论如何,正在运行的应用程序和其他系统进程仍在使用 CPU 和内存。

每秒更新一次是一个简单的应用程序;每分钟缓存和更新(或等待特定条件)使代码更复杂且容易出错。

【问题讨论】:

  • 每个 CPU 操作都会消耗电力。它不是由宇宙射线驱动的......
  • 耗电操作通常是网络操作,因为无线电需要大量电力。就电池而言,数据库操作并不是很昂贵。
  • 每个 CPU 和每个 IO 操作都会消耗电力。更新数据库需要写入文件,这是相当昂贵的。

标签: java android database battery


【解决方案1】:

每秒做一次和每分钟做一次有什么显着差异吗?

每秒做一件事所消耗的能量大约是每分钟做一件事的 60 倍。

由于只涉及 CPU 和内存,我认为这没有区别,但我不确定。

大多数人将他们的数据库存储在闪存中。写入闪存会消耗电力。

无论如何,正在运行的应用程序和其他系统进程仍会使用 CPU 和内存。

每秒执行一次工作,而不是每分钟执行一次,更有可能让 CPU 内核保持运行,否则它们不会运行。

【讨论】:

    【解决方案2】:

    我同意 CommonsWare 的回答——如果你不需要每秒都做某事并且可以不那么频繁地做,那么最好的做法是尽可能降低频率,因为更频繁地做会消耗更多能量。

    但是,为了解决您问题的“重要”部分,尤其是与其他设备操作相关的问题,请考虑以下基于对 HTC Dream (G1) 和 Nexus One 设备的测试的引用,来自:

    • Aaron Carroll 和 Gernot Heiser,“智能手机功耗分析”,发表在 2010 USENIX 年度技术会议论文集上,波士顿,马萨诸塞州,2010 年。http://www.nicta.com.au/pub?doc=3587

    “RAM、音频和闪存子系统始终显示出最低的功耗。虽然我们的微基准测试显示 SD 卡的峰值功率可能很大(50 mW),但实际上利用率已经足够低了因此,平均而言,消耗的功率可以忽略不计。即使是视频播放(移动设备数据密集型用途之一),SD 功率也远低于总功率的 1%。RAM 具有相似的特性;微基准测试表明 RAM 功率可以在某些工作负载中超过 CPU 功率,但在实际情况下,CPU 功率比 RAM 高出两倍或更多。音频在 28-34 mW 范围内显示出大部分静态功耗。总体而言,RAM、音频和 SD 几乎没有影响设备的功耗,因此几乎没有能量优化的潜力。”

    让 CPU 保持忙碌,否则它可能是每秒连续写入数据库而不是每分钟写入的最大能量影响。相对而言,假设正常使用,闪存单独使用消耗的能量相对较少。

    如果您对其他参考资料和讨论感兴趣,请参阅: https://stackoverflow.com/a/13004377/937715

    【讨论】:

      【解决方案3】:

      由于只涉及 CPU 和内存,我认为这没有区别,但我不确定。无论如何,正在运行的应用程序和其他系统进程仍在使用 CPU 和内存 -->

      每次您尝试更新时,处理器都会执行一条或多条指令。并且每条指令都耗电。所以,是的,每秒更新一次会消耗更多的电量。

      【讨论】:

        【解决方案4】:

        正如其他人所说,最好尽量减少处理器的使用。根本原因是所谓的空闲或 C 状态。在这些空闲状态下,处理器的某些部分实际上是关闭的。

        处理器将在空闲后几乎立即进入这些节能 C 状态之一,并在几秒钟后进入更深层次的状态之一。我不记得确切的时间间隔有多长,但肯定不会超过几秒钟。

        此外,如果处理器必须醒来进行一些计算,它不必再次重复下降;除非非常需要提升空闲状态,否则它将立即进入较低状态。你可以在这里“Power Management States: P-States, C-States and T-States”阅读更多信息。

        我知道您在更新频率方面没有太多选择,但理想情况下可能更接近 7 秒。太少了,处理器就不会陷入更深、更节能的 c 状态。比这更长的时间,处理器会被来自其他设备和进程的许多其他中断唤醒,所以再唤醒一次不会有太大的不同。

        小块 I/O 操作会消耗电力,主要是通过保持处理器忙碌和清醒。根据您的编译器、运行时和 VM,较大的传输可能通过不直接涉及 CPU 的 DMA。这可能有助于提高能源效率。

        PS Sean,感谢您的参考。

        【讨论】:

          猜你喜欢
          • 2013-09-10
          • 2011-05-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-07
          • 2010-11-29
          相关资源
          最近更新 更多