以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  [求助]多次调用同一系统函数的效率问题  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=73691)

--  作者:kminer
--  发布时间:2014/12/29 12:18:03
--  [求助]多次调用同一系统函数的效率问题
请问客服:
我在代码中如果大量使用了多次“TIME”,“ENTERPRICE”,“ENTERBARS”等等金字塔自带的返回函数。
        请问:如果引用100次“ENTERBARS”,是不是系统也反复计算了100次“ENTERBARS”?
        是否,我在所有引用“ENTERBARS”之前自定义一个参量AAA:=ENTERBARS; 后续就直接引用AAA的结果就可以极大的减小运算量,从而提高代码效率?

--  作者:FexTel
--  发布时间:2014/12/29 13:22:53
--  

1,其它指标引用ENTERBARS?还是光在指标里面进行统计

 


--  作者:kminer
--  发布时间:2014/12/29 13:44:00
--  
例如:
直接引用方式
A1:ENTERBARS>0;
B2:ENTERBARS>5;
C3:ENTERBARS<4

D4:ENTERPRICE>5000;
E5:ENTERPCIEC-C;
F6:ENTERPCIE-L;

与预处理后引用方式:
MY_ENTERBARS:=ENTERBARS;
A1:MY_ENTERBARS>0;
B2:MY_ENTERBARS>5;
C3:MY_ENTERBARS<4

MY_ENTERPRICE:=ENTERPRICE;
D4:MY_ENTERPRICE>5000;
E5:MY_ENTERPRICE-C;
F6:MY_ENTERPRICE-L;

上面的直接引用与预处理之后引用,两种方式的执行效率是一样的吗?


--  作者:FexTel
--  发布时间:2014/12/29 13:51:04
--  
....一样的哦
--  作者:kminer
--  发布时间:2014/12/29 14:02:28
--  
为什么呢?因为我不知金字塔如果取得ENTERBARS的值,但我想这跟REF函数类似,都要在数据序列中倒推计算出结果。每次使ENTERBARS,应该就会使用ENTERBARS函数一次,然后计算一堆历史数据,并返回出结果。这个结果被赋值后,应该会被释放吧。后续再次使用ENTERBARS时,会再执行这个函数一次。难道执行一次ENTERBARS之后,代码后续其它函数再次使用了ENTERBARS函数时,能直接取得前次ENTERBARS的结果???而不用重新计算。(我是按C进行设想的:变量可以直接引用,但引用的函数都要被执行一次,引用一个函数多少次,被引用的函数就会被执行多少次。提高效率就需要预处理这个函数的返回值,后续直接引用这个返回值就行了。)
--  作者:kminer
--  发布时间:2014/12/29 14:06:23
--  
难道类似“ENTERBARS”的返回函数,是系统已经预处理过,其实是一个变量,一直在系统中,可以直接引用,每个周期会自动重新计算一次?
--  作者:kminer
--  发布时间:2014/12/29 14:07:59
--  
http://www.weistock.com/bbs/dispbbs.asp?boardid=2&Id=30443
--  作者:kminer
--  发布时间:2014/12/29 14:09:43
--  
这个链接也没提到ENTERBARS的计算原理。
--  作者:FexTel
--  发布时间:2014/12/29 14:24:21
--  
1,这个值运行后都会记录在内存里面的哦