Ypsilon
25-09-2002, 14:45
Hi Leute,
Ein Kumpel hat mir das gestern so schön erklärt, was die Unterschiede zwischen short, long, double, unsigned, etc. sind.
(Bisher dachte ich immer "warum braucht man denn soviele seltsame Typen, man kann doch einfach für alles n double nehmen" :D).
Also wollte ich gleich mal austesten ob ich das richtig verstanden hab was er gesagt hat und hab zwei mini-Progrämmchen geschrieben, das eine heißt speedtest_short
und das andere speedtest_double.
speedtest_short sieht so aus:
int main(){
unsigned short k=65535;
unsigned int z;
for(unsigned short i=0;i<k;i++){
for(unsigned short j=0;j<k;j++){
z=i*j;
}
}
}
und speedtest_double so:
int main(){
double k=65535;
double z;
for(double i=0;i<k;i++){
for(double j=0;j<k;j++){
z=i*j;
}
}
}
Jetzt dachte ich, theoretisch müsste das erste ja schneller gehen.
Und dann sieht das aber so aus:
benni@linux ~/own/c++ $ time ./speedtest_short
real 3m41.849s
user 3m32.770s
sys 0m0.020s
benni@linux ~/own/c++ $ time ./speedtest_double
real 2m39.571s
user 2m33.940s
sys 0m0.010s
Ich habe bei beiden Programmen in der Zeit in der der Rechner dran gerechnet hat bewust nix gemacht (netmal die Maus bewegt).
Die Programme wurden exakt gleich kompiliert.
Warum ist jetzt das Programm mit den doubles schneller als das selbe mit short ints????
Das widerspricht irgendwie allem was ich da gestern gelernt habe.
:confused: :confused: :confused:
Ein Kumpel hat mir das gestern so schön erklärt, was die Unterschiede zwischen short, long, double, unsigned, etc. sind.
(Bisher dachte ich immer "warum braucht man denn soviele seltsame Typen, man kann doch einfach für alles n double nehmen" :D).
Also wollte ich gleich mal austesten ob ich das richtig verstanden hab was er gesagt hat und hab zwei mini-Progrämmchen geschrieben, das eine heißt speedtest_short
und das andere speedtest_double.
speedtest_short sieht so aus:
int main(){
unsigned short k=65535;
unsigned int z;
for(unsigned short i=0;i<k;i++){
for(unsigned short j=0;j<k;j++){
z=i*j;
}
}
}
und speedtest_double so:
int main(){
double k=65535;
double z;
for(double i=0;i<k;i++){
for(double j=0;j<k;j++){
z=i*j;
}
}
}
Jetzt dachte ich, theoretisch müsste das erste ja schneller gehen.
Und dann sieht das aber so aus:
benni@linux ~/own/c++ $ time ./speedtest_short
real 3m41.849s
user 3m32.770s
sys 0m0.020s
benni@linux ~/own/c++ $ time ./speedtest_double
real 2m39.571s
user 2m33.940s
sys 0m0.010s
Ich habe bei beiden Programmen in der Zeit in der der Rechner dran gerechnet hat bewust nix gemacht (netmal die Maus bewegt).
Die Programme wurden exakt gleich kompiliert.
Warum ist jetzt das Programm mit den doubles schneller als das selbe mit short ints????
Das widerspricht irgendwie allem was ich da gestern gelernt habe.
:confused: :confused: :confused: