有点惊讶 :)我想我应该分享并提出一个非反问的问题。 - 页 24

 
TheXpert:
在EMA上进行测试将是完美的。

咳咳......我认为这已经没有必要了。情况已经变得更加清晰。按照这个主题的惯例--有点惊讶,觉得应该分享一下......。:)

这里是测试的摘录,完整的测试在预告片中,库也在里面。

..........
....................
    IntRational ira={2345,3456};
    IntRational irb={67,93};
    IntRational irc={93,67};
    t = GetTickCount();
    for(int i=0;i<Count;i++)
      {
       ira.Div(irb); ira.Div(irc);
       ira.Mul(irb); ira.Mul(irc);
       ira.Add(irb); ira.Add(irc);
       ira.Sub(irb); ira.Sub(irc);
       ira.Norm();
      }
    Print("Common time IntRational test = ", GetTickCount()-t, " ms; // ",Count," calls");
    double da=2345.0/3456.0;
    double db=67.0/93.0;
    double dc=93.0/67.0;
    t = GetTickCount();
     for(int i=0;i<Count;i++)
      {
       da/=db; da/=dc;
       da*=db; da*=dc;
       da+=db; da+=dc;
       da-=db; da-=dc;
      }
    Print("Common time double test = ", GetTickCount()-t, " ms; // ",Count," calls");
..................
......

结果。

2011.04.04 20:29:15 RationalSpeedTest (EURUSD,M20) 普通时间 int test = 62 ms; // 1000000 calls
2011.04.04 20:29:15 RationalSpeedTest (EURUSD,M20) 普通时间长测试 = 141 ms; // 1000000调用
2011.04.04 20:29:15 RationalSpeedTest (EURUSD,M20) 普通时间 double test = 62 ms; // 1000000 calls
2011.04.04 20:29:15 RationalSpeedTest (EURUSD,M20) 普通时间 IntRational test = 1032 ms; // 1000000调用
2011.04.04 20:29:14 RationalSpeedTest (EURUSD,M20) 普通时间 LongRational test = 921 ms; // 1000000调用

我非常困惑:double和int在算术运算 的速度上绝对不相上下,此外,long是最快的,Rational则完全被搞砸了。

鉴于这些实验,我觉得有点不愿意建立一个整数测试器。:-))

也许用其他处理器,结果会有点不同(我会感谢那些将测试和发布的人),但我不相信有大的差异。

有趣的是,在难以忘怀的90年代,有一次我测试了整数和浮点运算之间的差异,差异是相当明显的(说起来很温和)。

摘要 - 90年代已经过去了,现在的浮点运算工作非常快。

即使将其改为整数运算也是不合理的(在交易背景下)--其收益即使不是虚幻的,也是可以忽略的。

最后的简历--如果英特尔不紧急在铁级上做出对有理算术的支持,你就不必再担心了......至少在性能方面是如此。:)

阿门。

// 我再重复一遍。测试是在一台旱獭电脑上进行的,因此,为了避免陷入任何误区,我想请大家在自己的电脑上进行测试,并将结果公布出来,并标明铁的参数。

// 我的电脑:2千兆内存,Sempron 3100+ 2.2千兆的CPU,32位,WinXP操作系统

Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
  • www.mql5.com
Основы языка / Операции и выражения / Арифметические операции - Документация по MQL5
附加的文件:
 
MetaDriver:

咳咳......我想这已经没有必要了。情况已经变得更加清晰。按照这个主题的惯例--有点惊讶,觉得应该分享一下......。:)



99%的扣除不会要求共同分母,所以测试并不完全正确。你必须采取真正的计算方法,并正确地进行计算。根据我的估计,Inty的速度是1000000倍(由于所有的东西都在内存和CPU缓存中):)其结果简直令人震惊。比如1秒内跑2000次。:)

 
MetaDriver:

摘要 - 90年代已经过去了,现在的浮点运算 工作非常快。

即使将其改为整数运算也是不合理的(在交易的背景下)--其收益可以忽略不计,甚至 根本不存在幻觉。

那些在过去......三十年里一直在编程的人早就知道了。

此外,我们改用SSE2也不是没有原因的,因为没有SSE2,就没有普遍的性能提高。

 
Renat:

在过去的......几百年里,谁一直在编程,已经知道了很久。

我们改用SSE2不是没有原因的,因为没有它,我们不会看到任何整体性能的提高。

我把一个tick打包成32位(asc、bid和time)。而且我得到了加速,这已经是可用的了。

:)另外,我不像MT5那样按记忆运行--所有变体的搜索都是绕着酒吧走,而不是反过来。:):)

**

顺便说一下,如果在MT上做不是太难,我在上面写了。

 
Academic:
我在32位上打了一个勾(升值、出价和时间)。而且我得到了一个速度提升,这已经是可用的了。

你在梦中可以做的事情远不止这些...只有实践能唤醒我,并破坏了一切。

但没有什么,今晚会有新的飞跃!。

 
Renat:

你可以在睡梦中做更多的事情...只有实践能唤醒我,并破坏了一切。

但没有什么,今晚将是一次新的飞行。

你不害怕被污染。我没有撒谎。:)补习很容易,你只需考虑一下。是啊...我对睡眠中的自信心感到惊讶。:)
 
Academic:
你不害怕被污染。我没有撒谎。:)补课很容易,你只需要想一想。是啊...我对睡眠中的自信心感到惊讶。:)

我一直在说 "实践",不是白说的。

我们在网络上传输报价时已经做了很长时间的极端逐位打包,而且很成功。平均压缩率为1:13,当10年的一分钟的故事被压缩成10-12mb。

但实际情况是,对这些乱七八糟的东西进行压缩(更不用说对它们进行数学运算了)需要很长时间,以至于速度是不可能的。

 
Renat:

我一直在说 "实践",不是白说的。

在网络上传输报价时,我们有长期和成功的极端逐位包装的历史。平均压缩率为1:13,即10年的一分钟的故事被压缩成10-12mb。

但实际情况是,对这些乱七八糟的东西进行压缩(更不用说对它们进行数学运算了)需要很长时间,以至于速度是不可能的。

我告诉你--你需要有高性能应用程序的编程经验。你不必是一个理论家,弄清楚这32位不会比花五个机器指令更慢。
 
MetaDriver:
...

阿门。

// 我重复一遍。测试是在一台独立的电脑上进行的,所以,为了不落入多余的幻想,我请那些愿意在他们的电脑上进行测试,并把结果贴出来,并注明硬件参数。

// 我的电脑:2G内存,Sempron 3100+ 2.2 GHz处理器,32位,WinXP操作系统

那些坚强的西伯利亚伐木工也是这么说的 :o)

2011.04.04 20:30:59     RationalSpeedTest (USDCHF,M1)   Common time int test = 78 ms; // 1000000 calls
2011.04.04 20:30:59     RationalSpeedTest (USDCHF,M1)   Common time long test = 125 ms; // 1000000 calls
2011.04.04 20:30:59     RationalSpeedTest (USDCHF,M1)   Common time double test = 94 ms; // 1000000 calls
2011.04.04 20:30:59     RationalSpeedTest (USDCHF,M1)   Common time IntRational test = 1391 ms; // 1000000 calls
2011.04.04 20:30:58     RationalSpeedTest (USDCHF,M1)   Common time LongRational test = 1015 ms; // 1000000 calls
P4 3 Гц [32 бита] 1Гб оперативы, ОС: Windows XP SP 3 версия 5.1 сборка 2600  

为了清楚起见,在伯爵中再给我一个零

2011.04.04 20:39:22     RationalSpeedTest (USDCHF,M1)   Common time int test = 718 ms; // 10000000 calls
2011.04.04 20:39:22     RationalSpeedTest (USDCHF,M1)   Common time long test = 1266 ms; // 10000000 calls
2011.04.04 20:39:20     RationalSpeedTest (USDCHF,M1)   Common time double test = 1000 ms; // 10000000 calls
2011.04.04 20:39:19     RationalSpeedTest (USDCHF,M1)   Common time IntRational test = 13156 ms; // 10000000 calls
2011.04.04 20:39:06     RationalSpeedTest (USDCHF,M1)   Common time LongRational test = 9282 ms; // 10000000 calls
 
2011.04.04 22:36:01    RationalSpeedTest (EURUSD,H1)    Common time int test = 63 ms; // 1000000 calls
2011.04.04 22:36:01    RationalSpeedTest (EURUSD,H1)    Common time long test = 94 ms; // 1000000 calls
2011.04.04 22:36:01    RationalSpeedTest (EURUSD,H1)    Common time double test = 47 ms; // 1000000 calls
2011.04.04 22:36:01    RationalSpeedTest (EURUSD,H1)    Common time IntRational test = 734 ms; // 1000000 calls
2011.04.04 22:36:00    RationalSpeedTest (EURUSD,H1)    Common time LongRational test = 594 ms; // 1000000 calls
AMD Phenom 9850四核(2.5GHz), 2Gb, WinXP SP3 32