Test amacıyla, bazı verilerle (verilerin ne olduğu önemli değil, şimdilik yalnızca birkaç çöp olabilir) bir "çiftler listesi listesi" ni doldurmaya çalışan bir C# sınıfı yazdım:Bu örnekte neden bir Listeden daha hızlı bir Tuple kullanıyorsunuz?
İştekodu: (a tuple tarafından çifte Listesi değiştirilmesi)
class test
{
public test()
{
_myListOfTuple = new List<Tuple<double, double, double>>(1000000);
}
public void Run()
{
for (int i = 0; i < _myListOfTuple.Capacity; i++)
{
_myListOfTuple.Add(
new Tuple<double, double, double>(i, 10 * i, 100 * i)
); //Populate the list with data
}
}
private List<Tuple<double, double, double>> _myListOfTuple;
}
tuple kullanarak görünüyor çıkıyor: aşağıdaki ile bu kodun yürütme hızını karşılaştırıldığında
class test
{
public test()
{
_myListOfList = new List<List<double>>(1000000);
}
public void Run()
{
for (int i = 0; i < _myListOfList.Capacity; i++)
{
_myListOfList.Add(
new List<double>(3) { i, 10*i, 100*i}
); //Populate the list with data
}
}
private List<List<double>> _myListOfList;
}
Oldukça hızlı olmak. Gerçekten bu bir kafamı alamayan
: Ben olsun sonuçlarıdır burada ve - I (listede> 5 milyon elemanları 200.000 elementlerden) farklı Liste boyutları için kod parçasını koştu. Nasıl bu kadar önemli bir fark aldım? Aynı türdeki nesneleri depolayan bir Tuple'ın kullanılması (burada iki katına çıkar) çok anlamlı değildir. Bunu yapmak için bir Liste/dizi kullanmayı tercih ederim: ne yapıyorum yanlış? # 1 numaralı davadan # 1 hızlı/hızlı çalışmasını sağlayabilmem için bir yol var mı?
Teşekkürler!
Bu neden bu kadar şaşırtıcı? Tam olarak 3 nesneyi depolamaktan daha fazla sayıda nesneyi saklamakla uğraşmak çok daha fazla iş gerektirir. – Servy
Genel giderler. Bir şey için, bir çift kişilik bir tuple bir liste ile karşılaştırıldığında ne kadar yer beklerdiniz? Her tür için hangi alanların dahili olarak sahip olmasını bekliyorsunuz? –
bile küçük farkları bile ölçeklendirmek onları büyük görünmesini sağlar .. – TaW