### 缠论数据计算性能

---

> 测试平台信息：
>
> 操作系统：Windows   
> Python 3.10   
> CPU：i9 12900k   
 

### 测试两种计算方式：

1. 批量一次性计算 50000 跟K线数据用时
2. 循环每根K线进行追加更新计算（模拟回测）

代码如下：

        from chanlun import cl
        from chanlun.exchange.exchange_db import ExchangeDB
        import time
        
        cl_config = {
            'fx_bh': 'fx_bh_yes', 'fx_qj': 'fx_qj_k', 'bi_type': 'bi_type_old', 'bi_bzh': 'bi_bzh_yes',
            'bi_qj': 'bi_qj_dd', 'bi_fx_cgd': 'bi_fx_cgd_no', 'xd_bzh': 'xd_bzh_yes', 'zsd_bzh': 'zsd_bzh_yes',
            'xd_qj': 'xd_qj_dd', 'zsd_qj': 'zsd_qj_dd',
            'zs_bi_type': 'zs_type_bz', 'zs_xd_type': 'zs_type_bz',
            'zs_wzgx': 'zs_wzgx_zggdd', 'zs_qj': 'zs_qj_ck'
        }
        
        ex = ExchangeDB('a')
        klines = ex.klines('SHSE.000001', '5m', args={'limit': 50000})
        print('K线数量：', len(klines))
        
        # 直接调用 process_klines 进行计算
        s_time = time.time()
        cd_1 = cl.CL('SHSE.000001', '5m', cl_config).process_klines(klines)
        print('计算后的K线数量：', len(cd_1.get_klines()))
        print('process_klines 一次批量计算 50000 用时：', time.time() - s_time)
        
        # 每根K线进行逐次计算
        s_time = time.time()
        cd_2 = cl.CL('SHSE.000001', '5m', cl_config)
        for i in range(1, len(klines) + 1):
            cd_2.process_klines(klines[i - 1:i:])
        print('计算后的K线数量：', len(cd_1.get_klines()))
        print('process_klines 逐跟K线计算 50000 用时：', time.time() - s_time)

结果：

        K线数量： 50000
        计算后的K线数量： 50000
        process_klines 一次批量计算 50000 用时： 37.42770791053772
        计算后的K线数量： 50000
        process_klines 逐跟K线计算 50000 用时： 59.82140636444092