以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5) ---- PEL中等效代码行数,对执行速度影响很大 (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=184871) |
-- 作者:youop -- 发布时间:2021/3/24 18:21:47 -- PEL中等效代码行数,对执行速度影响很大 最近看到论坛里的显示执行时间的语句,一时来了兴趣,开始看PEL语言执行效率,发现刨去语句本身算法的难易程度,等效一行代码本身就对执行效率有很大影响,测试如下: 选取黄金连续合约2014年8月13~2021年3月22日,1分钟周期,大约是115w个Bar。 先使用最简单的双均线穿越模型,大约使用了3s不到。 2021-03-24 18:11:35.189 开始 2021-03-24 18:11:38.023 结束 而使用更为无效的重复赋值语句重复赋值50次 ,不含任何函数,大约使用了4s不到 2021-03-24 18:13:49.900 Sta 2021-03-24 18:13:54.094 End 使用更为无效的重复赋值语句重复赋值100次 ,不含任何函数,大约使用了7.5s不到 2021-03-24 18:16:02.078 Sta 2021-03-24 18:16:09.612 End 所以这里没讨论计算的复杂程度,在PEL语言里,100句等效代码也不算多,光一行最简单的代码都能使代码效率有所降低,而在逐K+最后一根的模式下,接受1个tick不会所有刷新,但是等这个1分钟bar生成了,就要所有数据再次遍历一遍。 所以减少代码行数,或者把代码放入IF里面,的确很有必要。 附带最简单双均线系统: if barpos = 1 then DEBUGFILE2(\'D:\\2222.TXT\',\'开始\',0,1); if barpos= DATACOUNT then DEBUGFILE2(\'D:\\2222.TXT\',\'结束\',0,1); www:=(c+o+h+l)/4; ma1:=ma(www,500); ma2:=ma(www,3000); Kd:=cross(ma1,ma2); Kk:=cross(ma2,ma1); If kk and holding>0 Then Begin Sell(1,100%,Limitr,c-Mindiff); End If kd and holding<0 Then Begin Sellshort(1,100%,Limitr,c+Mindiff); End If Kd And holding=0 Then Begin Buy(1,1,Limitr,c+Mindiff); End If Kk And holding=0 Then Begin Buyshort(1,1,Limitr,c-Mindiff); End 无意义系统代码: if barpos = 1 then DEBUGFILE2(\'D:\\执行时间.txt\',\'Sta\',0,1); if barpos= DATACOUNT then DEBUGFILE2(\'D:\\执行时间.txt\',\'End\',0,1); //一行10个X X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888; X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888; X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888; X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888; X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888; X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888; X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888; X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888; X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888; X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888;X:=888; [此贴子已经被作者于2021/3/24 18:23:00编辑过]
|
-- 作者:youop -- 发布时间:2021/3/24 19:39:00 -- 使用全局变量语句重复赋值100次 ,不含任何函数,大约使用了6s不到 2021-03-24 19:37:20.892 Sta 2021-03-24 19:37:26.218 End 全局变量代码: if barpos = 1 then DEBUGFILE2(\'D:\\执行时间.txt\',\'Sta\',0,1); if barpos= DATACOUNT then DEBUGFILE2(\'D:\\执行时间.txt\',\'End\',0,1); VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0;VARIABLE:x1:=0; |
-- 作者:youop -- 发布时间:2021/3/24 19:42:20 -- 使用全局变量50个,大约是3s 2021-03-24 19:39:45.020 Sta 2021-03-24 19:39:48.026 End 所以在计算量大差不差的情况下,代码行数和执行时间大概是成一次函数关系 ,正相关
|