LolloVB (Normal User)
Newbie
Messaggi: 15
Iscritto: 08/01/2011
|
Su internet si è sempre sentito di come il C# fosse più veloce del vb.net, allora ho fatto un test della velocità di conteggio (ciclo while), per entrambi i linguaggi.
Ecco il codice per il prototipo vb.net:
Codice sorgente - presumibilmente VB.NET |
Dim count As Integer = 0 While (True) Application.DoEvents() count = count + 1 Label1.Text = count End While
|
Codice per il prototipo C#:
Codice sorgente - presumibilmente C# / VB.NET |
int count = 0;
while (true)
{
Application.DoEvents();
count++;
label1.Text = count.ToString();
}
|
Il risultato ottenuto è visualizzato nell' immagine che ho allegato.
NOTA: Il codice VB.NET è stato eseguito con qualche secondo di ritardo rispetto al codice C#, dunque non solo lo ha superato, ma lo ha anche raggiunto prima.
Premetto che non ho creato questo topic per insultare qualcuno, semplicemente è una cosa che trovo interessante, dato che fino ad' ora in vb.net è sempre stato considerato più lento del C# per quanto riguarda il calcolo.
P.S.: I codici non sono stati testati in debugging, dunque il risultato non è stato influenzato dal compilatore.
Ultima modifica effettuata da LolloVB il 14/02/2011 alle 20:11 |
|
D@vide (Member)
Expert
Messaggi: 450
Iscritto: 30/06/2010
|
Mi sembra un metodo poco "azzeccato" il tuo metodo per fare un benchmark.
Piuttosto controlla il codice IL generato e verifica che non sia identico
|
|
LolloVB (Normal User)
Newbie
Messaggi: 15
Iscritto: 08/01/2011
|
Il codice IL tra vb.net è C# è diverso già di suo, in quanto sono compilatori diversi (nonostante utilizzino entrambi la stessa piattaforma), difatti un programma eseguibile compilato in vb.net che pesa 240 kb, in C# pesa 30 kb.
Comunque sia sto facendo questi test per vedere se mi conviene rimanere al VB.NET o al C#, perchè so utilizzare bene entrambi, il problema è che molti miei progetti sono scritti tutti in vb.net (progetti di 50-60 mila righe), e dunque sarei costretto ad abbandonarli...
Ultima modifica effettuata da LolloVB il 14/02/2011 alle 20:47 |
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Postato originariamente da LolloVB:
Su internet si è sempre sentito di come il C# fosse più veloce del vb.net, allora ho fatto un test della velocità di conteggio (ciclo while), per entrambi i linguaggi.
|
fonti?
Ecco il codice per il prototipo vb.net:
Codice sorgente - presumibilmente VB.NET |
Dim count As Integer = 0 While (True) Application.DoEvents() count = count + 1 Label1.Text = count End While
|
Codice per il prototipo C#:
Codice sorgente - presumibilmente C# / VB.NET |
int count = 0;
while (true)
{
Application.DoEvents();
count++;
label1.Text = count.ToString();
}
|
|
se vuoi testare la velocità di calcolo allora devi escludere l'interazione con la GUI, ma che razza di senso ha tutto questo? Da quando la velocità "matematica" (se così si può chiamare) di un linguaggio si testa in questo modo?
ti assicuro che sei veramente fuori strada.
NOTA: Il codice VB.NET è stato eseguito con qualche secondo di ritardo rispetto al codice C#, dunque non solo lo ha superato, ma lo ha anche raggiunto prima.
|
tutto questo dovrebbe farti riflettere sulle tue metodologie di test senza capo ne coda.
Premetto che non ho creato questo topic per insultare qualcuno,
|
chi sarebbe così becero da pensarlo?
semplicemente è una cosa che trovo interessante, dato che fino ad' ora in vb.net è sempre stato considerato più lento del C# per quanto riguarda il calcolo.
|
ma è lo stesso film di prima? mi dispiace ma me lo sono perso.
P.S.: I codici non sono stati testati in debugging, dunque il risultato non è stato influenzato dal compilatore.
|
oddio ma che stai dicendo...
Ultima modifica effettuata da HeDo il 15/02/2011 alle 1:55 |
|
Thejuster (Admin)
Guru^2
Messaggi: 2305
Iscritto: 04/05/2008
|
Ma che è sta cosa?
paragonare un giocattolino come il vb.net al C#?
ma scherziamo?
se vuoi eseguire un test sul c# di velocità prova in questo modo.
non sò se è il modo corretto per testare ma sicuramente il vb.net
deve fare tanta strada per arrivare al c#
Codice sorgente - presumibilmente C# / VB.NET |
unsafe
{
int i = 0;
while (true)
{
Console.WriteLine(i);
i++;
}
}
|
Non sò quanto tempo ci ha messo il tuo esempio ad arrivare a 300.000
ma posso dirti che con il mio in 4 secondi e arrivato a > 660.000 o <> 770.000
Non so dirti precisamente.
Ultima modifica effettuata da Thejuster il 15/02/2011 alle 10:47
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Direi che Console.WriteLine utilizza il 70-80% del tempo totale per completare uno step, quindi non mi sembra molto affidabile...
In un mondo ideale non dovrebbe avere senso fare questi test, poiché entrambi i codice dovrebbero essere tradotti allo stesso modo in IL e quindi avere prestazioni pressoché identiche.
Posso azzardare a dire che quello spazio in più in VB potrebbe essere dato dalla compilazione del namespace My, incluso in ogni progetto windows form, ma che in c# non è presente di default.
|
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Postato originariamente da Il Totem:
Direi che Console.WriteLine utilizza il 70-80% del tempo totale per completare uno step, quindi non mi sembra molto affidabile...
In un mondo ideale non dovrebbe avere senso fare questi test, poiché entrambi i codice dovrebbero essere tradotti allo stesso modo in IL e quindi avere prestazioni pressoché identiche.
Posso azzardare a dire che quello spazio in più in VB potrebbe essere dato dalla compilazione del namespace My, incluso in ogni progetto windows form, ma che in c# non è presente di default. |
Ora non trovo l'articolo, ma ho letto che le prestazioni sono identiche, ma che VB.NET spesso dichiara variabili intermedie trasparenti all'utente, mentre C# no. |
|
Thejuster (Admin)
Guru^2
Messaggi: 2305
Iscritto: 04/05/2008
|
si ricordo che con il vb.net hai molta facilità nel gestire progetti e altre cose,
il c# su questo punto e non è un granché.
sarà anche che la sintassi del vb lascia un pò desiderare.
ma il C# lo vedo molto più professionale,
cmq c'è da dire che il vb.net genera molto più codice IL rispetto al C#.
un'altro linguaggio interessante e F# le statistiche dicono che è più veloce del C#
riducendo ancora di più codice IL.
Cmq non è che il vb.net mi stia antipatico o no, perche quello e stato il mio linguaggio di partenza.
Avendo programmato sia in vb.net che in c#
preferisco il c# lo vedo molto più completo come linguaggio.
sarà anche una mia impressione ma per me è sembrato così.
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
|
|