2016-03-22 16 views
1

64 Bit sunucu kullanıyorum. Benim golang programımın tamsayı tipine ihtiyacı var.Golang'da, daha az maliyet olan uint16 VS int?

SO, uint16 ve uint32 türünü kaynak kodunda kullanırsam, en düzenli int türünü kullanmaktan daha maliyetli midir?

Hem hesaplama maliyeti hem de geliştirme maliyeti düşünüyorum.

+5

Ne demek "maliyet"? Onlardan milyarlarca dolar saklamadığın ve onlara milyarlarca işlem yapmadığınız sürece, farkın farkına bile varacağınızdan şüpheliyim. Karşılaştığınız değerleri temsil eden her türlü gösterim kullanın. – tadman

+0

Ayrıca kaynak kodunda değişken türünü dönüştürmek için geliştirici yazma satırları da dahil maliyet. –

+2

Yanlış tür seçtiyseniz her zaman dönüştürüyorsanız. – tadman

cevap

8

int kullanan vakaların büyük çoğunluğu daha mantıklıdır. İşte bazı nedenler şunlardır:

  1. Git örtük Eğer düşünmek gerektiğini bile, sayısal türleri arasında dönüştürmez. int yerine imzasız bir tür kullanmaya başlarsanız, diğer kitaplıklar ya da API'ler, imzasız türlerle uğraşmayı tercih etmedikleri için, çok sayıda tür dönüşümle kodunuzu karantinaya almanız gerekir; çünkü, int değerlerini döndüren türlenmemiş sabit sayısal ifadeler nedeniyle,
  2. İşaretsiz türler, imzalı türlerden daha az taşmaya daha yatkındır; çünkü 0 (işaretsiz türün sınır değeri), bilgisayar programlarında doğal olarak oluşan bir değerden çok daha fazladır, örneğin, -9223372036854775808.
  3. İmzaladığınız değerleri kısıtladığından işaretsiz bir yazı tipi kullanmak istiyorsanız, sessiz taşmayı birleştirdiğinizde ve yalnızca sürekli yayılımı derlediğinizde muhtemelen pazarlık almıyorsunuzdur. aramak. Örneğin, math.MinInt64 sabitini uint'a dönüştüremezken, int değişkenini math.MinInt64 değerini uint değerine kolayca dönüştürebilirsiniz. Ve muhtemelen if numarasına sahip olmak kötü bir Go stili değildir, atamaya çalıştığınız değerin programınız için geçerli olup olmadığını kontrol edin. Eğer önemli bellek baskısı yaşıyoruz ve tüm değer uzay yere hafifçe daha küçük işaretli tür teklif ne bitti sürece

, ben int kullanarak bile sırf geliştirme maliyetinin ise çok daha verimli olacağını düşünmek istiyorum. Ve hatta o zaman, programınızın bellek ayak izi başka bir yerde bir sorun ya da Go gibi yönetilen bir dil ihtiyaçlarınız için en uygun değildir.