Convert mi? Parse mı?

3 05 2006

.Net Framework 2.0 da C# ile object tipi bir nesneyi alıp bunu integer bir değere dönüştürürken acaba hangisi daha performanslıdır :


object deger = 1492;
int.Parse(deger.ToString()); // Bu mudur?
Convert.ToInt32(deger); // Yoksa bu mu?

Lutz'un Reflector'ü ile mscorlib.dll'i açıp kodları incelediğimizde kesin yargıya ulaşamıyoruz. En iyisi gözlerimizle görmek diyerek konu hakkında minik bir uygulama yazdım.

Tester Uygulaması

public partial class Form1 : Form   
{   
object kurban = 1492;   
int sonuc;      

private void btnConvertTo_Click(object sender, 
    EventArgs e)   
{   
    for (int i = 0; i < 9000000; i++)   
    {   
        sonuc = Convert.ToInt32(kurban);   
    }   
    MessageBox.Show("Bitti!");   
}      

private void btnIntParse_Click(object sender, 
    EventArgs e)   
{   
    for (int i = 0; i < 9000000; i++)   
    {   
        sonuc = int.Parse(kurban.ToString());   
    }   
    MessageBox.Show("Bitti!");   
}  

}


Sonuçlara baktığımızda "ToString + int.Parse" butonuna tıkladığımızda 6sn sonra "Bitti!" mesajını görürken, "Convert.ToInt32" butonu 1sn içinde bize "Bitti!" mesajını gösterebiliyor.

Sizce hangisi daha performanslı?

Advertisements

Actions

Information

4 responses

10 08 2006
mustafa

hocam örnek süper olmuş teşekkür ederim

18 09 2006
sagiroglu

int.Parse(deger.ToString()); derken iki metod çağırmamız da etkilidir galiba değil mi? Zira iki metod çağırma iki stack doldurma işlemi değil midir?

31 01 2007
Berke Sokhan

Kesinlikle iki metod çağırmanın kötü yönde etkisi mevcut.

25 04 2009
Gökay

ikisinde tek metot çağırarak test ettim aralarıda hız farkı yok

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s




%d bloggers like this: