|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2000
Messaggi: 551
|
Quanto è + lento il visual Basic rispetto al C++ ?
In realtà dovrei dire Basic (quindi non il compilatore).
A parità di macchina, codice etc . Mediamente intendo... ![]() |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Jan 2000
Messaggi: 551
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Il Visual Basic è un po' un caso a parte
![]() |
![]() |
![]() |
![]() |
#4 |
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
per il calcolo numerico il test standard è il prodotto righe per colonne di due matrici (naive): lo scrivi in VB e C++ per i compilatori che ti interessano e fai il confronto dei tempi.
il confronto dei tempi lo puoi fare anche in relazione alle dimensioni delle due matrici, al tipo di variabili, al tipo di allocazione (dinamica o statica). il confronto è chiaro lo fai a parità di macchina, ma potrebbe essere interessante constatare se all'aumentare delle dimensioni delle matrici oltre la memoria di cache la velocità del Pentium supera quella dell'Athlon (per piccole dimensioni dovrebbe essere Athlon > Pentium). tra l'altro constato che VB anche nelle versioni for Application si sta sempre più compilando e deinterpretando. |
![]() |
![]() |
![]() |
#5 |
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
comunque una volta col VB interpretato in senso stretto la differenza col Fortran era il classico 1 a 20 !
anzi se non mi ricordo male era 1 a 20 rispetto al QuickBasic45 (precursore del VB), ma rispetto al QBasic allegato con il DOS era addirittura del tipo 1 a 50 ![]() adesso, ripeto, mi sembra che VB sia sempre più compilato e veloce. |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Se nn dico male il compilatore si VB si appoggia al p-code rendendo più veloce la fase di compilazione, ora non so se anche il C++ sia appoggia ad uno pseudo codice, ma mi sembra che VB sia + voleco del C++, almeno nel mio computer, poi magari mi sbaglio
![]() |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
"If you have the Professional or Enterprise edition of Visual Basic, you can compile your code either in standard Visual Basic p-code format or in native code format. Native code compilation provides several options for optimizing and debugging that aren't available with p-code."
Did efault VB6 compila in codice nativo... Erano VB4 e VB3 che si affidavano al p-code e non a caso si poteva ritornare facilmente al sorgente... |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Strano perchè nel manuale che ho di VB6 dice che il compilato (non l'exe intendo) ma solo quando si lancia un progetto usa ancora il p-code, poi dopo se si compila il compilatore fa ottimizzazioni sul codice che sono impossibili da decompilare (o quasi)
![]() |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ah...quello sì, è p-code...ma l'exe di default è compilato (basta vedere nelle proprietà del progetto)...
Ho usato uno degli algoritmi postati nel thread dei numeri primi... Questo è in C++: Codice:
#include <iostream> #include <cmath> #include <vector> using namespace std; #define N 10000000 int main() { unsigned long n = N; bool *data = new bool[N]; fill( data , data + n , true ); data[0] = data[1] = false; int tStart = timeGetTime(); for ( unsigned long i=2 ; i < sqrt(n) ; ++i ) if ( data[i] ) { unsigned long m = i*2; do { data[m]=false; m+=i; }while( m < n ); } int tEnd = timeGetTime(); cout << tEnd - tStart << endl; } Codice:
Const NUM = 10000000 Private Declare Function timeGetTime Lib "winmm.dll" () As Long Private Sub Form_Load() Dim n, i, tStart, tEnd, m As Long Dim data(NUM) As Boolean n = NUM For i = 1 To NUM data(i) = True Next i data(1) = False tStart = timeGetTime For i = 2 To Sqr(n) If data(i) Then m = i * 2 Do data(m) = False m = m + i Loop While m < n End If Next i tEnd = timeGetTime MsgBox CStr(tEnd - tStart) End Sub Con VC++ : 1699 ms Con VB p-code : 7560 ms Con VB EXE compilato : 3999 ms Le differenze non sono abissali, ma ci sono... |
![]() |
![]() |
![]() |
#11 |
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
ripeto, il problema standard per giudicare della velocità di esecuzione di codici di calcolo numerico (gli unici veri codici) è il prodotto righe per colonne di due matrici in virgola mobile.
test su numeri interi e derivati sono poco significativi. quindi fate ste tre righe di codice a tre indici e vediamo chi và più forte (Fortran, VB, C, C++, Pascal ecc.) (algoritmo standard naive) ![]() |
![]() |
![]() |
![]() |
#12 |
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
pronti, ai posti viaaaaaaaaa
occhio a non fare come la Toyota (Java) ![]() |
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Jan 2000
Messaggi: 551
|
Quote:
![]() a2000 ...nun cumncià , u' test sup u' fortran l' avit' già fatte! ![]() lishtesso AxB=C (ciao fratello ![]() ![]() |
|
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
Quote:
![]()
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
|
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Jan 2000
Messaggi: 551
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#16 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#17 | |
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Quote:
![]() ![]() poi la notte passiamo alle figlici ![]() ![]() ![]() Verlocc, comunque quello devi fare C = A*B, quello è il test canonico. ![]() |
|
![]() |
![]() |
![]() |
#18 | |
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Quote:
P.S. uaglio' ma foss' ca fuoss' ricchione ? |
|
![]() |
![]() |
![]() |
#19 | |
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Quote:
mi ricordo un Modifica : Accuonz' ![]() |
|
![]() |
![]() |
![]() |
#20 | |
Senior Member
Iscritto dal: Jan 2000
Messaggi: 551
|
Quote:
(t' shcumm' e' sang) ![]() Don Ciccillo Verloc (o' terror' e' Furcell' ) |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:16.