zoukankan      html  css  js  c++  java
  • python

    我为什么从python转向go

    我们目前正在开发的回测引擎使用的也是python,近期也在进行性能方面的优化,以下建议供参考:

    1. 在动手优化之前,先profile看看,程序时间都花在哪些地方了:
    python -m cProfile -o output.prof your_program
    跑完之后,会生成一个output.profile文件。接下来需要对这个文件进行分析,这方面的工具我推荐SnakeViz,神器。安装非常简单,pip install snakeviz 即可。
    snakeviz output.prof
    运行之后,会打开一个浏览器窗口,好好看看,哪些函数耗时最多,耗时是因为调用次数太多呢,还是因为单次调用耗时长,明确优化重点;

    2. 减少重复计算,缓存计算结果。看看 functools.lru_cache。

    3. 能用list comprehension的地方,不要用for;能用numpy的地方,不要手写循环,不要用pandas;

    4. 看你的回测,40w个tick的话,数据量不算大,应该是直接load到内存里的吧?

    5. 还是慢的话,上Numba — Numba,就是安装麻烦一些,使用起来非常方便,速度提高一两个数量级没问题;

    6. 如果你用的包PyPy都支持的话,试试pypy;

    7. Cython、c module,上面的都没效果的话,这个是最后的候选方案了。

  • 相关阅读:
    IOS手机 html5页面 数字变成蓝色链接的原因
    html5预加载图片的写法
    jquery取消绑定的方法
    CSS3幸运大转盘最简单的写法
    深度搜索应用之黑白图像(非递归)
    springday03-go1
    springday02-go4
    spring day02-go3
    springday02-go2
    spring da-y02-go1
  • 原文地址:https://www.cnblogs.com/jzm17173/p/6047113.html
Copyright © 2011-2022 走看看