uzmanlar için soru #define - sayfa 9

 
Alexandr Andreev :

Her zaman işe yaramaz.


Döngü gövdeleri farklı olduğu için bu geçerli bir test değildir.
İkinci gövdede daha fazla talimat var cnt--
Bu nedenle, bu benim doğru testim değil.
PI ile bence daha doğru.

 
Roman :

Döngü gövdeleri farklı olduğu için bu geçerli bir test değildir.
İkinci gövdede daha fazla talimat var cnt--
Bu nedenle, bu benim doğru testim değil.
PI ile bence daha doğru.

bu sadece bir yaşam biçimidir, test kullanım ve sağduyu açısından olabildiğince doğrudur. Dizinin boyutunu değiştireceğimiz herhangi bir döngüde tamamen aynı kod olacaktır. Konuya bir örnek

Ama orada PI varken ve sonuçlar net bir şekilde tek yönde değil, tekrar ediyorum, kontrol ediyorum

 
Alexandr Andreev :

bu sadece bir yaşam biçimidir, test kullanım ve sağduyu açısından olabildiğince doğrudur.
Dizinin boyutunu değiştireceğimiz herhangi bir döngüde tamamen aynı kod olacaktır. Konuya bir örnek

Ama orada PI varken ve sonuçlar net bir şekilde tek yönde değil, tekrar ediyorum, kontrol ediyorum

Peki, o nasıl haklı?
Döngü gövdesinde daha fazla talimat varsa, yineleme sırasında fazladan bir artış talimatı olan daha fazla kod yürütülür.
Hangi yürütme süresini artırır. Mantıklı.
Ve cisimler aynı olduğunda, döngü koşuluna itirazı zaten güvenle değerlendirebiliriz.

 
Roman :

Peki, o nasıl doğru?
Döngü gövdesinde daha fazla talimat varsa, yineleme sırasında fazladan bir artış talimatı olan daha fazla kod yürütülür.
Hangi yürütme süresini artırır. Mantıklı.
Ve cisimler aynı olduğunda, döngü koşuluna itirazı zaten güvenle değerlendirebiliriz.

))))

Tüm kanonlar tarafından doğru değil. Başlatmalar arasında (daha sık çalıştırın, başka bir çalıştırmayı derleyin - tek yol), bu nedenle, bir yöntem için çalıştırmalar arasındaki hesaplamalarda, itiraf edilen değerden daha fazla bir farkınız olur. Fark, sistemdeki mevcut görevlerden kaynaklanmaktadır. Onlar. Araştırılan değerin oranı çok küçük, artırmak için vücuttaki bu fonksiyonların sayısını artırmak .... ve en ucuz işlemi almak gerekiyor. Ve bu çarpma!... Daha bir tane daha bulamadım. Örneğin, benim örneğimde bir bölme kullanılıyor - bu, hayalet türlerin de kullanıldığı (oldukça pahalı bir işlem) pi'yi hesaplama yolundan birçok kez daha az.

 
Alexandr Andreev :

))))

Tüm kanonlara göre doğru değil. Başlatmalar arasında (daha sık çalıştırın, başka bir çalıştırmayı derleyin - tek yol), bu nedenle, bir yöntem için çalıştırmalar arasındaki hesaplamalarda, itiraf edilen değerden daha fazla bir farkınız olur. Fark, sistemdeki mevcut görevlerden kaynaklanmaktadır. Onlar. Araştırılan değerin oranı çok küçük, artırmak için vücuttaki bu fonksiyonların sayısını artırmak .... ve en ucuz işlemi almak gerekiyor. Ve bu çarpma!... Daha bir tane daha bulamadım. Örneğin, benim örneğimde bir bölme kullanılıyor - bu, hayalet türlerin de kullanıldığı (oldukça pahalı bir işlem) pi'yi hesaplama yolundan birçok kez daha az.

Tekrar. Test edilen döngü gövdesi değil, döngü koşuludur.
Koşulun karşılandığını ölçmek için döngülerin gövdeleri aynı olmalıdır.
Aksi takdirde bedenler farklı sürelerle yapıldığı için ölçüm süresi de farklı olacaktır.
Bu durumda elde ettiğimiz şey, fazladan bir komut olduğu için cnt--

 
void OnStart ()
  {
   int mas[];
   int mas1[ 300 ];
   int mas2[ 300 ];
   int mas3[ 300 ];
   int mas4[ 300 ];
   int mas5[ 300 ];
   int mas6[ 300 ];
   int z= 300 ;
   int size= 1000000000 ;
   ArrayResize (mas,size);
   int r= 0 ;
   int r1= 0 ;
   int r2= 0 ;
   int random;
   ulong max= 100 ; 
   int t= 0 ;
   int tr= 0 ; 
   MathSrand ( 10 );
     int num_steps= ArraySize (mas);
     double x, pi, sum= 0.0 ;
     double step = 1.0 /( double )num_steps;
    
     int v=size;
     ulong t1 = GetMicrosecondCount ();
     
    
   // for(ulong z=0; z<max; z++)
     {
       for ( int i= 0 ; i< ArraySize (mas); i++)
        {  
        r2+= ArraySize (mas);
        r2<<= 3 ;
        }

     }  
   ulong t2= GetMicrosecondCount ();
   //for(ulong z=0; z<max; z++)
   int sizem= ArraySize (mas);
     {
       for ( int i= 0 ; i<sizem; i++)
        { 
        r2+=sizem;
        r2<<= 3 ;
        
        }
     }
    
   ulong t3= GetMicrosecondCount ();
   Print (t2-t1, "  " ,t3-t2, " " ,r2, " " ,r1);
// Templ();
  }

Genel olarak, affetme ve ikili kaydırma (en ucuz işlemlerden biri olan) arasındaki değişimin de hesaplamayı etkilediği ortaya çıkıyor .... Peki, hiçbir fark yok, karar bu
 
Roman :

Tekrar. Test edilen döngü gövdesi değil, döngü koşuludur.
Koşulun karşılandığını ölçmek için döngülerin gövdeleri aynı olmalıdır.
Aksi takdirde bedenler farklı sürelerle yapıldığı için ölçüm süresi de farklı olacaktır.
Bu durumda elde ettiğimiz şey, fazladan bir komut olduğu için cnt--

Genel olarak, metnim tam olarak pi sayısıyla ilgili yöntemle ilgiliydi.

 
#define hakkında sormaya bile korkuyorum
 
Алексей Тарабанов :
#define hakkında sormaya bile korkuyorum

Daha iyi tanımlamaktan bahsedelim.
Anladığım kadarıyla çalıştırılabilir dosyada performans artışı sağlamıyor.

 
Roman :

Daha iyi tanımlamaktan bahsedelim.
Anladığım kadarıyla çalıştırılabilir dosyada performans artışı sağlamıyor.

Haydi. Önce - sonra - yürütülebilir dosyayı, ardından - yürütülebilir dosyanın yürütülmesini tanımlayın.