• 性能优化


    从第1版起,核心的投标引擎基本没有动,运行几十天也都正常。正好其他事情差不多了,想着再优化优化。我对比了本地和服务器的数据,以抓取概略标的为例,本地平均时间是220ms左右,服务器是120ms左右,快一些很正常。

    后面,我基本就以本地数据为主,服务器肯定会快一些。

    对引擎而言,主要工作就这些:抓概略标的——抓详细标的——比较投标——其他辅助处理。

    本地概略标的每次耗时220ms,优化余地不大。

    详细标的每次耗时500-600ms,最重要的耗费还是以http方式抓数据,但接口就是如此,要提高很难。

    比较:0.4-2.8ms,相比之下是比较少的

    投标:不是固定的耗费,用户多的话可以再优化,目前必要性不大。

    本以为详细数据是问题关键,分析半天也没有太好的办法。最后发现,其实还有一个真正的“硕鼠”,就是其他辅助信息的获取。定期获取用户资金,我还追踪了满标的时间,计算每次的耗费,居然达到秒级!

    发现问题,解决就很简单了,把用户数据更新的频率和次数优化,把满标时间分离到另外一个程序中,结果就大大改进了。原来统计,用于抓概略标的的CPU时间是最多的(因为详细标的并不常有),稳定后,服务器上这个时间占比能够到47%,也就是说,一半时间都在抓标。

    优化之后,这个比例达到85%以上,换言之,几乎所有的时间都在跟踪标的,把对标的的反应间隔尽可能缩到最小。感觉对于满标极快的标的,抓的成功率高多了。这是最近投标的满标时间:

    image

  • 相关阅读:
    POJ 3280 Cheapest Palindrome (区间DP)
    UVaLive 4731 Cellular Network (期望DP)
    UVa 11404 Palindromic Subsequence (LCS)
    UVa 11552 Fewest Flops (DP)
    UVa 10534 Wavio Sequence (LIS+暴力)
    UVaLive 4256 Salesmen (简单DP)
    UVaLive 4094 WonderTeam (贪心)
    UVaLive 3266 Tian Ji -- The Horse Racing (贪心)
    POJ 3723 Conscription (最小生成树)
    NodeJS学习笔记 进阶 (4)基于express+muter的文件上传(ok)
  • 原文地址:https://www.cnblogs.com/jetz/p/7446208.html
Copyright © 2020-2023  润新知