Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - VB.NET vs C# (Speed Test) (.NET Framework 4.0)
Forum - C# / VB.NET - VB.NET vs C# (Speed Test) (.NET Framework 4.0)

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
LolloVB (Normal User)
Newbie


Messaggi: 15
Iscritto: 08/01/2011

Segnala al moderatore
Postato alle 20:05
Lunedì, 14/02/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

  1. Dim count As Integer = 0
  2.  
  3.         While (True)
  4.             Application.DoEvents()
  5.             count = count + 1
  6.             Label1.Text = count
  7.         End While



Codice per il prototipo C#:
Codice sorgente - presumibilmente C# / VB.NET

  1. int count = 0;
  2.  
  3.             while (true)
  4.             {
  5.                 Application.DoEvents();
  6.                 count++;
  7.                 label1.Text = count.ToString();
  8.             }



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.

:)



LolloVB ha allegato un file: vbnetvscsharp.jpg (15920 bytes)
Clicca qui per guardare l'immagine

Ultima modifica effettuata da LolloVB il 14/02/2011 alle 20:11
PM Quote
Avatar
D@vide (Member)
Expert


Messaggi: 450
Iscritto: 30/06/2010

Segnala al moderatore
Postato alle 20:42
Lunedì, 14/02/2011
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:yup:

PM Quote
Avatar
LolloVB (Normal User)
Newbie


Messaggi: 15
Iscritto: 08/01/2011

Segnala al moderatore
Postato alle 20:45
Lunedì, 14/02/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
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 1:50
Martedì, 15/02/2011

Testo quotato


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?


Testo quotato


Ecco il codice per il prototipo vb.net:
Codice sorgente - presumibilmente VB.NET

  1. Dim count As Integer = 0
  2.  
  3.         While (True)
  4.             Application.DoEvents()
  5.             count = count + 1
  6.             Label1.Text = count
  7.         End While



Codice per il prototipo C#:
Codice sorgente - presumibilmente C# / VB.NET

  1. int count = 0;
  2.  
  3.             while (true)
  4.             {
  5.                 Application.DoEvents();
  6.                 count++;
  7.                 label1.Text = count.ToString();
  8.             }






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.

Testo quotato


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.

Testo quotato


Premetto che non ho creato questo topic per insultare qualcuno,



chi sarebbe così becero da pensarlo?

Testo quotato


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.


Testo quotato



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


Ingegnere Informatico
https://ldlagency.it
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 10:41
Martedì, 15/02/2011
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

  1. unsafe
  2.             {
  3.                 int i = 0;
  4.                 while (true)
  5.                 {
  6.                     Console.WriteLine(i);
  7.                     i++;
  8.                 }
  9.             }



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


PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:00
Martedì, 15/02/2011
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.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 12:10
Martedì, 15/02/2011
Testo quotato

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.


Ingegnere Informatico
https://ldlagency.it
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 12:56
Martedì, 15/02/2011
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ì.


PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:17
Martedì, 15/02/2011
Ho trovato la stessa domanda anche su stackoverflow:
http://stackoverflow.com/questions/1223660/is-c-code-faste ...
Essenzialmente la risposta è la stessa. Le implementazioni variano solo in minima parte e ci sono diverse opzioni di default impostate per un compilatore o per l'altro.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo