Ai maladitsa,你惹恼了自己,你纠正了自己,在我们做得不好的时候又插了一杠子。
一年前,我也深受其害,但我有满腔热情。障碍?也许我只是节后心情不好......:(
与调用本地类函数相比,调用库函数的成本是多少?
这不仅仅是一个简单的封装,每次打喷嚏都要调用库函数。
好样的,你尿裤子了,你修好了自己,又一个插头,而我们的情况却不太好。
其实,这里也没那么糟。
这是篇好文章。我一直在使用库,这是迄今为止唯一一种正常的代码分离方式。
你最好告诉我,什么时候会有通用的巨型神经元?
Urain:
调用库函数 的成本与调用本地类函数的成本相比是多少?
我查过了,没有区别。
在导入或包含时调用 Test empty 函数不会影响时间。
/* #import "Graph.ex5" void Test(long achart,string name,int awnd,int ax,int ay,color aclr); #import */ #include "Graph.mq5" void OnStart() { long a=GetTickCount(); for (int i=0; i<1000000; i++) { Test(0, "qwe", 0, 10, 10, clrRed); } Print(string(GetTickCount()-a)); }
其实,这里的情况并没有那么糟糕。
文章一针见血。我一直在使用库,这是迄今为止唯一能正确分离代码的方法。
什么时候会有通用的巨型神经元?
你的神经元什么时候会出现?
老实说,我会多看看你的文章,然后彻底放弃 MT5。
我从灵魂深处厌倦了所有这些拐杖,无论我转到哪里,一切都乱糟糟的,"他们要开动电车了":)
Neuronka 就躺在某处,如果你认真地、有心情地坐下来,就会发现工作还在,但没有心情。
我检查过了,没有区别。
在导入或导出时调用空测试也不会影响时间。
俗话说,感觉不同:
2012.01.06 16:46:28 计算器(EURUSD,H1) empty=281
2012.01.06 16:46:28 计算器 (EURUSD,H1) lib=2344
//+------------------------------------------------------------------+ //|测试。mq5 //+------------------------------------------------------------------+ #property library void Test(long achart,string name,int &awnd,int ax,int ay,color aclr) export { awnd=ax+ay; } //+------------------------------------------------------------------+
#import "Test.ex5" void Test(long achart,string name,int &awnd,int ax,int ay,color aclr); #import void OnStart() { int res=0; long a=GetTickCount(); for(int i=0; i<100000000; i++) { Test(0,"qwe",res,10,10,clrRed); } Print("liba=",string(GetTickCount()-a)); a=GetTickCount(); for(int i=0; i<100000000; i++) { res=10+10; } Print("empty=",string(GetTickCount()-a)); }
循环是相同的,在循环中执行的操作也是相同的(一种情况是直接在循环中执行,另一种情况是在函数中执行),时间上的差异给出了函数调用库的净时间。
为了实验的纯粹性,让我们直接在文件中描述一个类似的函数:
2012.01.06 17:18:39 计算器 (EURUSD,H1) empty=281
2012.01.06 17:18:38 计算器 (EURUSD,H1) lib=2281
//+------------------------------------------------------------------+ //|测试。mq5 //+------------------------------------------------------------------+ #property library void Test(long achart,string name,int &awnd,int ax,int ay,color aclr) export { awnd=ax+ay; } //+------------------------------------------------------------------+
#import "Test.ex5" void Test(long achart,string name,int &awnd,int ax,int ay,color aclr); #import void Testlocal(long achart,string name,int &awnd,int ax,int ay,color aclr) { awnd=ax+ay; } void OnStart() { int res=0; int count=100000000; long a=GetTickCount(); for(int i=0; i<count; i++) { Test(0,"qwe",res,10,10,clrRed); } Print("liba=",string(GetTickCount()-a)); a=GetTickCount(); for(int i=0; i<count; i++) { Testlocal(0,"qwe",res,10,10,clrRed); } Print("empty=",string(GetTickCount()-a)); }
为了排除错误,我甚至重写了一个变量计数的循环长度,结果还是一样。
我有 4.5 次
2012.01.06 17:28:33 测试 (EURUSD,D1) ex5=2047
2012.01.06 17:28:31 测试 (EURUSD,D1) local=438
Alex 这样还不够吗?
这里是 4 次,这里是 2 次,等等。
如果我们开始根据圣经编写圣经,刹车就会像滚雪球一样越滚越大。
只要圣经本身不使用圣经调用,就可以使用这种方案。
新文章 利用 EX5 库来推动您的项目开发已发布:
隐藏 .ex5 文件中类/函数的实施细节,会让您能够同其他开发人员共享自己的专有算法,设立共同项目并在网络中宣传它们。而且,在 MetaQuotes 团队不遗余力地引入直接继承 ex5 库类可能性的同时,我们现在就要付诸实施了。
作者:o_O