Verilen eleman(lar)ın bir dizisini temizleme - sayfa 13

 
Maxim Kuznetsov :

optimize edici işe yaramaz - karşılaştırmalar 2 kattan azdır ..

Döngüleri dikkatlice gözden geçirin ve mantığın tam bir tesadüf olduğunu göreceksiniz.
not. Her ne kadar dur, şüphelendi.
 

Sadece küçük bir yeniden düzenleme ("Çünkü dünyada bu kadar güzel olamazsın..."):

 #define BENCHMARK_TEST(function, test_name)     \
   ArrayCopy (arr2,arr);                         \
   t= GetMicrosecondCount ();                     \
   N= ##function(arr2,Value);                     \
   t= GetMicrosecondCount ()-t;                   \
   printf ( "вариант %-12s: Контрольная сумма = %f; элементов - %d; время выполнения - %6d микросекунд" , test_name, ControlSumm(arr2), N, t);


void OnStart ()
{
   srand ( 1 );
   
   int N;
   ulong t;
   int Value= rand ()% 1000 ; // значение, которое нужно удалить из массива
   
   int arr[]; // исходный массив
   int arr2[]; // создаем еще один массив для теста и копируем в него исходный массив

   ArrayResize (arr, 1000000 );
   for ( int i= 0 ; i< 1000000 ;i++){ 
      arr[i]= rand ()% 1000 ; //генерируем исходный массив случайными значениями от 0 до 1000
   }   
   
   BENCHMARK_TEST(ArrayDeleteVal1,       "Pastushak" );
   BENCHMARK_TEST(arrayFilter,           "Korotky" );
   BENCHMARK_TEST(DelEl2,               "Fedoseev" );
   BENCHMARK_TEST(ArrayDeleteVal,       "Semko" );
   BENCHMARK_TEST(ArrayModify,           "Pavlov" );
   BENCHMARK_TEST(arrayFilter2,         "Nikitin" );
   BENCHMARK_TEST(ArrayDelV,             "Vladimir" );
   BENCHMARK_TEST(PeterArray,           "Peter" );
   BENCHMARK_TEST(arrayFilter3,         "Kuznetsov" );
}

//..............................................

Sonuç:
 2018.11 . 15 01 : 11 : 13.670 Test (EURUSD,H1)        вариант Pastushak   : Контрольная сумма = 7225.757267 ; элементов - 998994 ; время выполнения - 127587 микросекунд
2018.11 . 15 01 : 11 : 13.675 Test (EURUSD,H1)        вариант Korotky     : Контрольная сумма = 7225.757267 ; элементов - 998994 ; время выполнения -   2530 микросекунд
2018.11 . 15 01 : 11 : 13.679 Test (EURUSD,H1)        вариант Fedoseev    : Контрольная сумма = 7225.757267 ; элементов - 998994 ; время выполнения -   1995 микросекунд
2018.11 . 15 01 : 11 : 13.681 Test (EURUSD,H1)        вариант Semko       : Контрольная сумма = 7225.757267 ; элементов - 998994 ; время выполнения -     854 микросекунд
2018.11 . 15 01 : 11 : 13.686 Test (EURUSD,H1)        вариант Pavlov      : Контрольная сумма = 7225.757267 ; элементов - 998994 ; время выполнения -   3239 микросекунд
2018.11 . 15 01 : 11 : 13.692 Test (EURUSD,H1)        вариант Nikitin     : Контрольная сумма = 7225.757267 ; элементов - 998994 ; время выполнения -   3812 микросекунд
2018.11 . 15 01 : 11 : 13.698 Test (EURUSD,H1)        вариант Vladimir    : Контрольная сумма = 7225.757267 ; элементов - 998994 ; время выполнения -   4037 микросекунд
2018.11 . 15 01 : 11 : 13.707 Test (EURUSD,H1)        вариант Peter       : Контрольная сумма = 7225.757267 ; элементов - 998994 ; время выполнения -   7855 микросекунд
2018.11 . 15 01 : 11 : 13.710 Test (EURUSD,H1)        вариант Kuznetsov   : Контрольная сумма = 7224.813498 ; элементов - 998994 ; время выполнения -     744 микросекунд
Dosyalar:
 
Sergey Dzyublik :

Sadece küçük bir yeniden düzenleme ("Çünkü dünyada bu kadar güzel olamazsın..."):

Biraz daha yüksek soruldu - orijinal diziyi bir dizi olarak koymaya çalışın. ArraySetAsSeries (..,doğru);

oldukça güncel bir soru - hangi hilelerin serilerle hiç çalışmadığına ve hangilerinin aniden yavaşladığına bakmak için

dizi filtreleme ile düzeltin, diziyle ilgili soru daha pratik

 
Sergey Dzyublik :

Sadece küçük bir yeniden düzenleme ("Çünkü dünyada bu kadar güzel olamazsın..."):

Yararlı bir kaliteli ders için teşekkürler Sergey. :)

 

@Maxim Kuznetsov ayrı bir kategoriye taşındı, yine de farklı işlevler

Hata içeren testleri yorumladım (Semko ve Pavlov).

Sürümümü ekledim

PS Evet ve şablonların kaldırılması gerekiyor, bu aynı zamanda çift karşılaştırma yaparken olası bir hatadır.

Dosyalar:
 
Stanislav Dray :

@Maxim Kuznetsov ayrı bir kategoriye taşındı, yine de farklı işlevler

Hata içeren testleri yorumladım (Semko ve Pavlov).

Sürümümü ekledim

PS Evet ve şablonların kaldırılması gerekiyor, bu aynı zamanda çift karşılaştırma yaparken olası bir hatadır.

Dizinin son iki öğesini Değer'e eşit yaptı. Semko'nun hatası yok. Hangi durumda hataları olduğunu gösterin. Aksi halde lideri kovmak adil değil, sportmence değil.

Normalizasyondan kaynaklanan double ile ilgili hatalar nelerdir? Yani bir double dizi ile çalışıyorsanız, diziye normalleştirilmiş veri eklemek için kendinize dikkat etmeniz gerekir.

 
Dmitry Fedoseev :

Dizinin son iki öğesini Değer'e eşit yaptı. Semko'nun hatası yok. Hangi durumda hataları olduğunu gösterin. Aksi halde lideri kovmak adil değil, sportmence değil.

Normalizasyondan kaynaklanan double ile ilgili hatalar nelerdir? Yani bir double dizi ile çalışıyorsanız, diziye normalleştirilmiş veri eklemek için kendinize dikkat etmeniz gerekir.

Kodda yorum yaptım, muhtemelen fark etmediniz. Dizinin son elemanı silme koşulunun altına düşerse, yani Değer'e eşitse hata

Sırf kimse bir hata ile kopyala-yapıştır yapmasın diye koddan atmadım :). Bence Nikolai kodunu düzeltip kendisi geri dönecek :)

Ve şablonlar pahasına: fonksiyon gerçek sayıların yanlış bir karşılaştırmasına sahip olduğundan veya daha doğrusu bunun için tasarlanmadığından, çift geçerken bir hata olacaktır, bu nedenle, şablonu yerleştirmeden önce yapmak gerekiyordu. işlevin her türde düzgün çalışacağından emin olun.

1

 
Stanislav Dray :

Kodda yorum yaptım, muhtemelen fark etmediniz. Dizinin son elemanı silme koşulunun altına düşerse, yani Değer'e eşitse hata

Sırf kimse bir hata ile kopyala-yapıştır yapmasın diye koddan atmadım :). Bence Nikolai kodunu düzeltip kendisi geri dönecek :)

Ve şablonlar pahasına: fonksiyon gerçek sayıların yanlış bir karşılaştırmasına sahip olduğundan veya daha doğrusu bunun için tasarlanmadığından, çift geçerken bir hata olacaktır, bu nedenle, şablonu yerleştirmeden önce yapmak gerekiyordu. işlevin her türde düzgün çalışacağından emin olun.


Neye dikkat edilmeliydi? İşte burada: " Son öğelerden biri veya daha fazlası koşulla eşleşirse dizi bozulur"? Bunun hakkında yukarıda yazdım, işe yaramadı. Ekran görüntüsünden de görebileceğiniz gibi, durum böyle değil. Az miktarda veri ile bir hata oluşuyor gibi görünüyor.

Çift ile hata ne olacak? Neden hepsi aniden? Dizide hangi veriler var ve çalışacak. Bir şeyin düzgün çalışması gerekiyorsa bir diziye yerleştirmeden önce normalleştirme yapmanız gerekir. Ancak normalleştirmeyi araya sokma işlevinde değil. İşlev, şablona mükemmel şekilde uyar ve doğru kullanırsanız double ile iyi çalışır.

Herkesin bir anda çifte problemle meşgul olması çok iyi ama konuya kafanız ile yaklaşmanız gerekiyor.

 
Dmitry Fedoseev :

Neye dikkat edilmeliydi? İşte burada: " Son öğelerden biri veya daha fazlası koşulla eşleşirse dizi bozulur"? Bunun hakkında yukarıda yazdım, işe yaramadı. Ekran görüntüsünden de görebileceğiniz gibi, durum böyle değil. Az miktarda veri ile bir hata oluşuyor gibi görünüyor.

Çift ile hata ne olacak? Neden hepsi aniden? Dizide hangi veriler var ve işe yarayacak. Eğer düzgün çalışması gerekiyorsa bir diziye yerleştirmeden önce normalleştirme yapmak gerekir. Ancak sadece normalleşmeyi araya sokma işlevinde değil. İşlev, şablona mükemmel bir şekilde uyar ve doğru kullanırsanız çift ile harika çalışır.

Herkesin bir anda çifte problemle meşgul olması çok iyi ama konuya kafanız ile yaklaşmanız gerekiyor.

Fonksiyonun nasıl çalışması gerektiği konusunda farklı görüşlere sahibiz.Fonksiyon Afrika'da da bir fonksiyondur ve herhangi bir veri hazırlığı olmadan çalışması gerekir, her şey içeride çalışmalı.Kopyala-yapıştır yapan kişi veri hazırlama hakkında hiçbir şey bilmiyor ve bilmemeli.

PS Evet, aslında kimse ilgilenmiyor, bir şekilde mor hissediyorum. Az önce buradaki şablonların bir köpeğin 5. ayağı gibi olduğunu ve olası bir hata olabileceğini yazdım.

 
Stanislav Dray :

Fonksiyonun nasıl çalışması gerektiği konusunda farklı görüşlere sahibiz.Fonksiyon Afrika'da da bir fonksiyondur ve herhangi bir veri hazırlığı olmadan çalışması gerekir, her şey içeride çalışmalı.Kopyala-yapıştır yapan kişi veri hazırlama hakkında hiçbir şey bilmiyor ve bilmemeli.

Bu bir anaokulu.

Neden: