Ik heb destijds (op mijn Amiga in basic) een routine gemaakt dat een binaire string in een array stopte zodat ik een snelle conversie decimaal->binair kreeg.
vb x[3] -> 00000011
Ik heb deze routine altijd verder blijven gebruiken om de snelheid tussen verschillende systemen/talen te vergelijken.
Ondertussen heb ik het in C++ gegoten. Ik merk een groot verschil tussen van uitvoering VC++ en CBuilder.
De code is zeker niet optimaal, maar leunt het dichtst bij de basic van toen.
Ik heb een PIII 800 en krijg volgend resultaten.
VisualC 6.0 : 0,000075 sec
CBuilder 5 : 0,00013 sec
Java (1.4) : 0,000203 sec
Java (1.3) : 0,000212 sec
(Op mijn Amiga 500 duurde het destijds 1,25 sec in gecompileerd basic)
Hoe komt het dat er zo'n grote verschillen zijn in VC en CBuilder. (misschien heb ik niet alle optimalisatie opties aangezet)
vb x[3] -> 00000011
Ik heb deze routine altijd verder blijven gebruiken om de snelheid tussen verschillende systemen/talen te vergelijken.
Ondertussen heb ik het in C++ gegoten. Ik merk een groot verschil tussen van uitvoering VC++ en CBuilder.
De code is zeker niet optimaal, maar leunt het dichtst bij de basic van toen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
CString x[255];
int aantal(200000);
CTime t1, t2;
int a,b,c,d,e,f,g,h,i, tel;
double t;
t1 = CTime::GetCurrentTime();
cout << "Let's go !!"<< endl;
for(i=1; i<=aantal; i++)
{
tel = 0;
for (a=0; a<=1; a++)
for (b=0; b<=1; b++)
for (c=0; c<=1; c++)
for (d=0; d<=1; d++)
for (e=0; e<=1; e++)
for (f=0; f<=1; f++)
for (g=0; g<=1; g++)
for (h=0; h<=1; h++)
{
x[tel]=(100000000+a*10000000+b*1000000+c*100000+d*10000+e*1000+f*100+g*10+h);
x[tel].Right(8);
tel++;
}
}
t2 = CTime::GetCurrentTime();
for (i=0; i>=255; i++)
cout << x[tel];
t = (t2.GetHour()-t1.GetHour())*3600+(t2.GetMinute()-t1.GetMinute())*60 + (t2.GetSecond()-t1.GetSecond());
cout << (t2.GetHour()-t1.GetHour())*3600+(t2.GetMinute()-t1.GetMinute())*60 + (t2.GetSecond()-t1.GetSecond()) << endl;
cout << t/aantal << "sec" << endl;
cin >> t;
return 0;
} |
Ik heb een PIII 800 en krijg volgend resultaten.
VisualC 6.0 : 0,000075 sec
CBuilder 5 : 0,00013 sec
Java (1.4) : 0,000203 sec
Java (1.3) : 0,000212 sec
(Op mijn Amiga 500 duurde het destijds 1,25 sec in gecompileerd basic)
Hoe komt het dat er zo'n grote verschillen zijn in VC en CBuilder. (misschien heb ik niet alle optimalisatie opties aangezet)