View Single Post
Old 24-05-2003, 11:19   #10
cionci
Senior Member
 
L'Avatar di cionci
 
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;
}
E questo in VB:
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
L'algoritmo l'ho riportato pari pari...ed il tempo viene preso nella stessa posizione...

Con VC++ : 1699 ms
Con VB p-code : 7560 ms
Con VB EXE compilato : 3999 ms

Le differenze non sono abissali, ma ci sono...
cionci è offline   Rispondi citando il messaggio o parte di esso