Tuval harika! - sayfa 16

 

Mevcut işlemci seviyesinde, çift matematiğin frenlerini unutabilirsiniz. Fren yok.

Ve tamsayıya aktararak optimizasyon yöntemleri zaten gerçekten modası geçmiş. Matematikte kazanacağınızdan çok daha fazlasını dönüşümde kaybedersiniz.


64-bit kodu ve derleyicimizi göz önünde bulundurarak, ikili hesaplamalara dayalı görev sınıfındaki tamsayıyı unutmamız gerekiyor..

İşte Nikolay'ın optimizasyon girişimlerini analiz etmenin önceki bir örneği: https://www.mql5.com/en/forum/1111/page2164#comment_6796332

Derleyici , farklı ifadelerden iki 64 bitlik çift kök hesaplamasını 128 bitlik bir montaj talimatında birleştirmeyi başardı. Çift matematikle çalışırken, tamsayı türlerine atlamak/dönüştürmek kesinlikle önerilmez. Dönüşümde vahşi işlemci (bizim değil) ek yükleri var.

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2018.03.11
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Nikolai Semko :

yuvarlamaya gerek yok

İşte size iyi bir örnek olarak bir komut dosyası.

İlk önce varsayılan parametrelerle çalıştırın (düzleştirilmiş daireler ve çift koordinatlar ve boyutlar ile)

ve ardından type = not_smoothed_circles parametresiyle çalıştırın (düzleştirilmemiş daireler ve int türünün koordinatları ve boyutları ile - CCanvas sınıfından)

Harika oldu.

Kenar yumuşatma olmadan saniyede 347 kareye ve 2100x550 pikselde tuval üzerinde kenar yumuşatma 97'ye sahibim.

Bilgi için, saniyede 500 karelik bir pencere güncelleme hızı sınırlayıcımız var. Bu da grafiklerde ne kadar performans elde edilebileceğini gösteriyor.

 
Renat Fatkhullin :

Mevcut işlemci seviyesinde, çift matematiğin frenlerini unutabilirsiniz. Fren yok.

Ve tamsayıya aktararak optimizasyon yöntemleri zaten gerçekten modası geçmiş. Matematikte kazanacağınızdan çok daha fazlasını dönüşümde kaybedersiniz.


64-bit kodu ve derleyicimizi göz önünde bulundurarak, ikili hesaplamalara dayalı görev sınıfındaki tamsayıyı unutmamız gerekiyor..

İşte Nikolay'ın optimizasyon girişimlerini analiz etmenin önceki bir örneği: https://www.mql5.com/en/forum/1111/page2164#comment_6796332

Derleyici , farklı ifadelerden iki 64 bitlik çift kök hesaplamasını 128 bitlik bir montaj talimatında birleştirmeyi başardı. Çift matematikle çalışırken, tamsayı türlerine atlamak/dönüştürmek kesinlikle önerilmez. Dönüşümde vahşi işlemci (bizim değil) ek yükleri var.

Keneleri tamsayı yaparsanız, "Test Edici" nin çok daha hızlı çalışmaya başlayacağından neredeyse eminim.

 
Artyom Trishkin :

Hayır, peki, bu geçiş değil. Bir streç ile geçiş diyebilirsiniz:


Genel olarak, gerçek olanı kendim yapmak için çok tembeldim - onu örnek klasörlerinde buldum.

Dönüşüm, kelimenin tam anlamıyla - öldürmek.

 
fxsaber :

Keneleri tamsayı yaparsanız, "Test Edici" nin çok daha hızlı çalışmaya başlayacağından neredeyse eminim.

At, Elena Yurievna'nın dediği gibi anlıyor.

 
Nikolai Semko :

Doom'dan ilham alındı ve @fxsaber tarafından tavsiye edildi.

Bu sitenin algoritması, küçük değişikliklerle temel alınmıştır.

Gerçekten havalı!

Ne resim yapıyorsun Nikolai?

 
fxsaber :

Keneleri tamsayı yaparsanız, "Test Edici" nin çok daha hızlı çalışmaya başlayacağından neredeyse eminim.

Numara.

Başlamak için şunu anlayın:

  1. her şeyin ints'ye dönüştürülmesi gerekecek
  2. veri dönüştürmede birden fazla fren yapın
  3. vahşi bellek tüketimini al
  4. her operasyonda %100 taşma ve toplam sistem ölümü şansı elde edin
  5. göstergelerini okumayı teklif ettiğiniz geliştiricileri ve tüm çalışmaları çiftler yerine ints'de tamamen görmezden gelin
  6. ve evet, hız açısından çiftler ve intler arasında bir fark yoktur. İnanması zor ama evet
Yukarıdaki kanıtları boş yere alıntılamadım. Orada Nikolai, optimizasyon yöntemini önceden hesaplanmış kök tabloları aracılığıyla uygulamaya çalıştı ve süreçteki çift köklerin gerçek zamanlı hesaplanmasında kayboldu.
 
Алексей Тарабанов :

Dönüşüm, kelimenin tam anlamıyla - öldürmek.

Bunu burada tartışmaya değmez, ama yine de Morphing (İngilizce geçiş - dönüşüm) Ölüleri orada nerede gördün - ayık ...

 
Artyom Trishkin :

Bunu burada tartışmaya değmez, ama yine de Morphing (İngilizce geçiş - dönüşüm) Ölüleri orada nerede gördün - ayık ...

Morfometrik analiz - ölü hücrelerin analizi. Önce öldürürüz, sonra - mikroskop altında.

 
Renat Fatkhullin :

Numara.

 #define BENCH(A)                                                              \
{                                                                             \
   const ulong StartTime = GetMicrosecondCount ();                              \
  A;                                                                          \
   Print ( "Time[" + #A + "] = " + ( string )( GetMicrosecondCount () - StartTime)); \
}  

template < typename T>
T Tester( const int Amount = 1 e7 )
{
  T Sum = 1 ;
  T Price = 1 ;
  
   for ( int i = 0 ; i < Amount; i++)
  {
    Price = 1 - Price;
    
    Sum += (Sum > Price) ? 1 : 0 ;
  }
  
   Print (Sum);
  
   return (Sum);
}

void OnStart ()
{
  BENCH(Tester< int >());
  BENCH(Tester< double >());
}


Int, double'dan iki kat daha hızlıdır

 10000001
Time [Tester< int >()] = 25523
10000001.0
Time [Tester< double >()] = 51253