【问题标题】:Generally speaking, do I write code that saves memory or code to save processing time for simple objects for smartphone applications?一般来说,我是编写节省内存的代码还是编写代码以节省智能手机应用程序简单对象的处理时间?
【发布时间】:2010-10-29 12:50:00
【问题描述】:

我不确定这是不是最好的例子,但这里是。假设我想在 Android 应用程序的画布上绘制一个对象。我需要做一些数学运算并调用一个方法来返回屏幕大小以找出在哪里绘制它,因为我的应用程序应该支持多个屏幕。我真的只需要执行一次此过程,因为每次我想要绘制对象时,它都会被绘制到同一个地方。如果我只执行一次该过程,我必须将返回值保存在内存中,以便以后可以参考它们。

或者,我可以在每次想要绘制对象时调用该过程来获取这些值,这样我就不必在 Activity 的整个生命周期内将任何值保存在内存中。

现在我知道,并非所有情况都相同,因为我可以编写一个花哨的 100,000 行算法,它只返回一个整数值,或者走到相反的极端,但我希望有一个常识权衡一般认为是可以接受的。

那么,正确的方法是什么?能详细点吗?

谢谢各位!

【问题讨论】:

    标签: java iphone android memory smartphone


    【解决方案1】:

    我使用的常识权衡是“不要过早优化”。我构建我的代码,选择当时我能做的最简单、最清晰的实现。这是编写正确工作代码的最快方法。然后我测试并分析代码。只有这样我才能解决需要优化的领域。

    如果分析代码使用太多内存,我会返回并优化空间与时间。如果分析代码运行太慢,反之亦然。

    如果我花太多时间预先考虑如何优化代码,我会引入不必要的复杂性,并且总是无法正确关注最终系统中的重要优化。

    【讨论】:

    • 啊啊啊啊啊啊啊啊,先KISS,等你退一步看到她胖了再试试看你哪里错了。
    • 我基本上处于以一种方式实现事物的地步,现在我必须实现类似的功能。在我花时间去做之前,我想,我应该确保我不只是要重写我已经完成的事情。
    • @user432209 我知道你的感受,但通常情况下,你会发现你会浪费更多的时间,因为你试图预测你的程序的最佳(过早)优化是/将如何以及然后调试程序,因为过早的优化导致代码非常模糊和纠结,然后在稍后简单地重写应用程序的部分以优化它的资源使用。就开发时间而言,最好将您的应用程序编写得尽可能自然和清晰,而不是过早地优化并陷入调试和重写的地狱。
    • @user432209(续)与理想优化相比,性能权衡是不可观察且微不足道的,因此没有理由过早优化。
    • @user432209(续)至于您的情况,我会说将返回值存储在内存中,因为这对我来说是最自然的实现(因为它听起来像是应用程序/窗口初始化例程,应该只执行一次)。
    【解决方案2】:

    取决于应用程序的类型。你知道经济学的供求曲线吗?争取边际成本……至少对于智能手机来说,这没什么大不了的,除非你杀死太多的内存或处理能力来让你的应用程序看起来慢得令人尴尬。

    【讨论】:

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