使用iCustom的效率问题?为什么初始化超级慢

 

我写了一个指标AAA

把指标AAA单独拖到图表中时,一秒就初始化好了,并不会很耗时


然后我又写了一个指标BBB,指标BBB中调用了AAA,用iCustom(NULL,0,"AAA",period,period,7,i+1); 来调用


读取AAA指标中的一个参数。


然后把BBB拖到图表中时居然要卡上好几分钟才初始化完毕


我把BBB指标中一切实际内容都删掉,只在for(i=0;i<limit;i++)的主循环内保留一行代码,也就是ccc = iCustom(NULL,0,"AAA",period,period,7,i+1); 这一行读取AAA指标值的代码


结果把这个可以说是空的BBB拖到图表中时,就需要卡上好几分钟才能初始化完毕。


这有什么办法改进吗?

 
在BBB中调用AAA导致很卡顿,应该是AAA运行本身就慢,检查下AAA代码。
 
这个7是什么意思,这是指标的第八个参数,你这个指标够庞大的,
 

两个参数的名字怎么可能会一样呢

 
Ziheng Zhuang:
在BBB中调用AAA导致很卡顿,应该是AAA运行本身就慢,检查下AAA代码。

问题是直接拖AAA进图表的话,只需要不到1秒钟就初始化完毕了。


iCustom调用AAA的时候,难道是每一次调用AAA都要重新初始化一遍AAA?如果iCustom第一次调用AAA时会把AAA初始化一遍,随后AAA指标数据就保存在内存里,之后再次调用AAA时直接读取已经初始化过的AAA数据的话,那么BBB的初始化应该也用不了几秒钟才对

 
Ziheng Zhuang:
在BBB中调用AAA导致很卡顿,应该是AAA运行本身就慢,检查下AAA代码。

问题是直接拖AAA进图表的话,只需要不到1秒钟就初始化完毕了。


iCustom调用AAA的时候,难道是每一次调用AAA都要重新初始化一遍AAA?如果iCustom第一次调用AAA时会把AAA初始化一遍,随后AAA指标数据就保存在内存里,之后再次调用AAA时直接读取已经初始化过的AAA数据的话,那么BBB的初始化应该也用不了几秒钟才对

 
Ziheng Zhuang:
在BBB中调用AAA导致很卡顿,应该是AAA运行本身就慢,检查下AAA代码。

知道原因了

AAA这个指标本身是用iCustom调用过DDD这个指标的


现在我把BBB这个指标改了,不经过AAA,直接调用DDD指标,然后就好了,BBB指标也只需要不到一秒就初始化好了。

 
Huajun Huang:

知道原因了

AAA这个指标本身是用iCustom调用过DDD这个指标的


现在我把BBB这个指标改了,不经过AAA,直接调用DDD指标,然后就好了,BBB指标也只需要不到一秒就初始化好了。


好吧,这里有个结论,这个问题你之前也问过。

每次调用iCustom("AAA") 时:

1. 不会重新初始化AAA

2. 也不会重复计算所有K线(除非指标AAA本身重复计算)。

 
Ziheng Zhuang:


好吧,这里有个结论,这个问题你之前也问过。

每次调用iCustom("AAA") 时:

1. 不会重新初始化AAA

2. 也不会重复计算所有K线(除非指标AAA本身重复计算)。

是的,所以这次BBB初始化卡很久让我很疑惑。

不过现在看来,如果iCustom调用的指标里,还有iCustom函数调用第三个指标的话,可能会有重复问题出现,我只能这么理解我这次遇到的初始化卡好几分钟的事情。