Biraz şaşırdım :) Retorik bir soru DEĞİL paylaşmaya ve sormaya karar verdim. - sayfa 24

 
TheXpert :
EMAshka kontrolünde - en fazla olacak.

Hmm .. Bunun artık gerekli olmadığını düşünüyorum. Durum aydınlandı. Bu konudaki alışılmış olduğu gibi - biraz şaşırdım ve paylaşmaya karar verdim ... :)

İşte testten bir alıntı, testin tam metni fragmanda, ayrıca bir kütüphane var:

..........
....................
    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" );
..................
......

Sonuçlar:

2011.04.04 20:29:15 RationalSpeedTest (EURUSD,M20) Ortak zaman int testi = 62 ms; // 1000000 çağrı
2011.04.04 20:29:15 RationalSpeedTest (EURUSD,M20) Ortak zamanlı uzun test = 141 ms; // 1000000 çağrı
2011.04.04 20:29:15 RationalSpeedTest (EURUSD,M20) Ortak zaman ikili testi = 62 ms; // 1000000 çağrı
2011.04.04 20:29:15 RationalSpeedTest (EURUSD,M20) Ortak zaman IntRational testi = 1032 ms; // 1000000 çağrı
2011.04.04 20:29:14 RationalSpeedTest (EURUSD,M20) Ortak zaman UzunRational testi = 921 ms; // 1000000 çağrı

Çok kafam karıştı - aritmetik işlemlerin hızı açısından çift ve int kesinlikle çakıştı ve dahası, en hızlı, yarı yarıya geride kaldı, Rational tam kıçında.

Bu deneylerin ışığında bir tamsayı test cihazı oluşturmak biraz sıkıcı oldu.. :-))

Belki diğer işlemcilerde sonuçlar biraz farklı olacaktır (test edenlere ve düzenleyenlere minnettar olacağım), ancak büyük farklılıklara inanamıyorum.

İlginç bir şekilde, 90'ların başında, tamsayı ve kayan işlemler arasındaki farkı test ettim, farklar oldukça dikkat çekiciydi (hafifçe söylemek gerekirse).

Özet - 90'lar gitti ve gitti, kayan nokta aritmetiği artık çok hızlı çalışıyor.

Tamsayı aritmetiğine değiştirmek bile makul değildir (ticaret bağlamında) - yanıltıcı değilse bile kazanç ihmal edilebilir.

Son özet - Intel, demir düzeyinde rasyonel aritmetik için hemen destek yapmazsa, artık bunun için endişelenemezsiniz ... en azından hız açısından. :)

Amin.

// Tekrarlıyorum. Testler ayrı bir bilgisayar taşında yapıldı, bu nedenle gereksiz yanılgılara düşmemek için testi bilgisayarlarında yapmak isteyenlerin donanım parametrelerini gösteren sonuçları göndermelerini rica ediyorum.

// Bilgisayarım: 2 gig RAM, Sempron 3100+ 2.2 gigahertz, 32 bit, WinXP işletim sistemi

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

Hmm .. Bunun artık gerekli olmadığını düşünüyorum. Durum aydınlandı. Bu konudaki alışılmış olduğu gibi - biraz şaşırdım ve paylaşmaya karar verdim ... :)



Hesaplamaların %99'u ortak bir paydaya indirgemeyi gerektirmez. Yani test tamamen doğru değil. Gerçek hesapları alıp doğru yapmamız gerekiyor. Ints, bugünkü tahminlerime göre daha hızlıdır (ve her şeyin belleğe ve işlemci önbelleğine sığması nedeniyle) - 1000000 :) Tek kelimeyle çarpıcı sonuçlar. 1 saniyede 2000 koşu gibi. :)

 
MetaDriver :

Özet - 90'lar gitti ve gitti, kayan nokta aritmetiği artık çok hızlı çalışıyor .

Onu tamsayı aritmetiğine çevirmek bile mantıklı değil (ticaret bağlamında) - yanıltıcı değilse bile kazanç ihmal edilebilir .

Son on bir yıldır programlama yapanlar bunu uzun zamandır biliyorlar.

Ek olarak, SSE2'ye geçmemiz boşuna değildi, çünkü onsuz performansta genel bir artış olmaz.

 
Renat :

Son on bir yıldır programlama yapanlar bunu uzun zamandır biliyorlar.

SSE2'ye geçmemiz boşuna değildi, çünkü onsuz performansta genel bir artış olmaz.

32 bite bir onay işareti koydum (sor, teklif ve zaman). Ayrıca alınan - zaten kullanılması mümkün olan hız.

:) Artı, bellekten, MT5 gibi koşmuyorum - çubuğun etrafındaki tüm seçenekleri büküyorum ve tersi değil. :) Uçan!!! :)

**

Bu arada, zor değilse MT'ye gidin - yukarıda yazdım.

 
Academic :
32 bite bir onay işareti koydum (sor, teklif ve zaman). Ayrıca alınan - zaten kullanılması mümkün olan hız.

Bir rüyada, bunun gibi başka bir şey yapabilirsiniz ... Sadece pratik yapmak sizi uyandırır ve her şeyi mahveder.

Ama hiçbir şey, bu gece yeni bir fantezi uçuşu olacak!

 
Renat :

Bir rüyada, bunun gibi başka bir şey yapabilirsiniz ... Sadece pratik yapmak sizi uyandırır ve her şeyi mahveder.

Ama hiçbir şey, bu gece yeni bir fantezi uçuşu olacak!

Kaçmaktan korkmuyorsun. Yalan söylemiyorum. :) Zorlamak kolaydır, sadece düşünmeniz gerekir. Şey ... bir rüyada - özgüvene hayran kaldım. :)
 
Academic :
Kaçmaktan korkmuyorsun. Yalan söylemiyorum. :) Zorlamak kolaydır, sadece düşünmeniz gerekir. Şey ... bir rüyada - özgüvene hayran kaldım. :)

"Alıştırmayı" tekrar etmem boşuna değil.

Uzun bir süredir, ağ üzerinden aktarım sırasında aşırı bit düzeyinde fiyat tekliflerini başarıyla paketledik. Ortalama olarak, 10 yıllık bir dakikalık geçmiş 10-12 mb'ye sıkıştırıldığında sıkıştırma 1:13'tür.

Ancak uygulama öyle ki, bu rezaletin (onlarla matematiksel işlemlerden bahsetmiyorum bile) açılması o kadar çok zaman alıyor ki, herhangi bir hızdan söz edilemez.

 
Renat :

"Alıştırmayı" tekrar etmem boşuna değil.

Uzun bir süredir, ağ üzerinden aktarım sırasında aşırı bit düzeyinde fiyat tekliflerini başarıyla paketledik. Ortalama olarak, 10 yıllık bir dakikalık geçmiş 10-12 mb'ye sıkıştırıldığında sıkıştırma 1:13'tür.

Ancak uygulama öyle ki, bu rezaletin (onlarla matematiksel işlemlerden bahsetmiyorum bile) açılması o kadar çok zaman alıyor ki, herhangi bir hızdan söz edilemez.

Size söylüyorum - yüksek performanslı uygulamaları programlama konusunda deneyim sahibi olmanız gerekiyor. Ve teori ile uğraşmamak için - bu beş makine talimatının bu 32 bitinden veri çıkarmak daha yavaş olmayacaktır.
 
MetaDriver :
...

Amin.

// Tekrarlıyorum. Testler ayrı bir bilgisayar taşında yapıldı, bu nedenle gereksiz yanılgılara düşmemek için testi bilgisayarlarında yapmak isteyenlerin donanım parametrelerini gösteren sonuçları göndermelerini rica ediyorum.

// Bilgisayarım: 2 gig RAM, Sempron 3100+ 2.2 gigahertz, 32 bit, WinXP işletim sistemi

Sert Sibiryalı oduncular da aynı şeyi söyledi :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   

Tam netlik için Count'ta bir sıfır daha Dawabilated

 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 Dört Çekirdekli (2.5GHz), 2Gb, WinXP SP3 32