【问题标题】:How to determine what is more resource expensive, a write/read or a computation如何确定更昂贵的资源,写入/读取或计算
【发布时间】:2019-07-25 23:27:26
【问题描述】:

我抓取股票数据。我刮了以下内容:

opening pricestock pricevolume tradedshares in issue

我抓取的网站也有一些其他可用的衍生数量。通过派生,我的意思是这些可以从上面的数量计算出来。其中包括:

value tradedmarket capprice change

虽然后者可以被抓取到我的数据库中,然后稍后再读取,但我也可以编写在请求时动态计算它们的方法。因此,与其将它们写入数据库并稍后读取,我可以只使用像

这样的方法

calculate_value_traded()calculate_market_cap()calculate_price_change()

我的问题是,更有效的方法是什么?在实践中如何确定“更高效”?我知道这可能取决于写入/读取的数据量以及计算的性质,但我想知道如何进行基准测试以提高资源效率并最终降低成本?

我查看的是使用的内存、带宽、I/O 还是什么?我需要衡量什么才能最终选择一个而不是另一个?

【问题讨论】:

  • 您正在使用许多不同种类的资源。您可能没有想到并且在这里最重要的是您银行帐户中的美元数量。那种能够以饱和下一个数据的速率为您提供该数据的数据服务和网络管道需要花费 很多 的资金。因此,如果您对此进行了修补并且似乎没有任何区别,那么您就找到了真正的瓶颈。

标签: database performance computer-science processing-efficiency memory-efficient


【解决方案1】:

一般来说,您不需要存储计算值,除非它们非常频繁地使用或者它们应该以极快的速度提供。原因是您有几个地方可以进行此计算。首先,它是数据库引擎,通常具有使用计算列的内置可能性。其次,您可以在应用程序客户端进行计算,从而减少 I/O 和带宽的使用。这两种情况都会降低您的存储成本,您也应该考虑到这一点。第三,您可以为这些数据使用一种缓存存储,例如使用 IMDG 存储。

请注意,答案非常笼统,因为我们没有关于您的性能和成本要求以及您使用的技术手段的信息。

但请注意存储计算数据,因为您需要实施机制在源数据更新时重新计算它,以确保您的数据保持一致。

【讨论】:

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