SORU
31 Ocak 2011, PAZARTESİ


C çeteleler tamsayılar kullanımı daha yavaş?

Çok basit bir sorun var :

Git bir programı kaydediyorum. QVector<int> veya bir yönetim kurulu ile temsil QVector<Player> nereye

enum Player
{
    EMPTY = 0,
    BLACK = 1,
    WHITE = 2
};

Tabii ki, tam sayılar yerine Oyuncu daha yavaş olacak sanırım. Ama ne kadar, enum kullanarak daha iyi bir kodlama olduğunu düşünüyorum çünkü merak ediyorum.

Ve Oyuncular int (karşıt olarak) atama karşılaştırılması ile ilgili birkaç test yaptım

QVector<int> vec;
vec.resize(10000000);
int size = vec.size();


for(int i =0; i<size;   i)
{
    vec[i] = 0;
}


for(int i =0; i<size;   i)
{
    bool b = (vec[i] == 1);
}


QVector<Player> vec2;
vec2.resize(10000000);
int size = vec2.size();


for(int i =0; i<size;   i)
{
    vec2[i] = EMPTY;
}


for(int i =0; i<size;   i)
{
    bool b = (vec2[i] == BLACK);
}

Temelde, sadece  daha yavaş. Devam etmeden önce Bilmem Gereken başka bir şey var mı?

Teşekkürler!

Edit:  fark değil benim hayal gücünün bir ürünü, belirli Qt ve Deyişle görünüyor. Std kullandığımda::vektör, hız aynı

CEVAP
31 Ocak 2011, PAZARTESİ


Çeteleler tamamen zaman (tamsayı sabitler, değişkenler tamsayı numaralandırma değişkenleri olarak numaralandırma sabitler) derleme çözülür, bunları kullanarak hız cezası yok.

Genel ortalama numaralandırma olmayacak bir temel türü daha büyük int (sürece size koymak çok büyük sabitler); gerçekleri, §7.2 ¶ 5 açıkça söyledi:

Bir numaralandırmanın arka plandaki türünü tüm numaralandırma değerleri numaralandırma tanımlanan temsil edebilecek ayrılmaz bir türüdür. Bir numaralandırma için temel türü olarak kullanılan bir uygulama tanımlıbunun dışında temel türü int büyük olamazint unsigned int sayacı bir uyum değerini sürece.

Bunlar genellikle kod okumak ve korumak için daha kolay çünkü yeri gelince numaralandırma kullanmak gerekir (hiç bir program tam hata ayıklama için denediniz mi "sihirli sayı"? :S).

Sonuçlar gelince: muhtemelen test metodolojisi dikkate kodu çalıştırdığınızda olsun normal hızda dalgalanmalar "" makineleri . normal almaz ^sup>1sınav çok (100 ) kez çalıştıran çalıştı ve hesaplama ve kez standart sapma demek? Sonuçlar uyumlu olmalıdır: ortalamalar arasındaki fark 1 ya da 2 kez RSS daha büyük olmamalı2iki standart sapma (her zamanki gibi varsayarak, dalgalanmalar için Gauss dağılımı).

Yapabileceğin başka bir onay üretilen assembly kodu (g -S anahtarı ile ulaşabilirsiniz) karşılaştırmak için.

< / ^ hr .
  1. "Normal" bazı indeterministic dalgalanmalar var PC yüzünden diğer görevleri çalışan, önbellek/RAM/VM devlet, ..
  2. Kök Sum Kare, Kare, standart sapmaların toplamının kare kökü.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Edgar flores

    Edgar flores

    7 HAZİRAN 2006
  • ShotgunSandwichENT

    ShotgunSandw

    3 EKİM 2012
  • UniqueApps

    UniqueApps

    4 Ocak 2009