Czasem tak mnie natchnie i napiszę sobie coś głupiego w C++ (bo mądrego nie potrafię ;))
I tak napisałem kod porównujący czas dzielenia modulo przez 2 i koniunkcji bitowej z 1. Z tego, co wiem, to operacje te dają ten sam wynik, natomiast druga jest bardziej pro i szybsza.
Kod wygląda tak:
#include <iostream>
using namespace std;
int main()
{
const int ILE_RAZY = 1000000000;
int pocz, kon, wynik;
cout << "Nacisnij ENTER!\n";
cin.get();
pocz = clock();
for(int i = 0; i < ILE_RAZY; i++)
wynik = i % 2;
kon = clock();
cout << "Czas dzielenia modulo to: " << kon - pocz << endl;
pocz = clock();
for(int i = 0; i < ILE_RAZY; i++)
wynik = i & 1;
kon = clock();
cout << "Czas koniunkcji bitowej: " << kon - pocz << endl;
cin.get();
return 0;
}
Pisałem w CodeBlocks 8.02, kompilowałem domyślnym w nim GCC.
No i bardzo dziwią mnie wyniki, bo pętla pierwsza wykonuje się jakieś 10 - 20 razy szybciej, niż druga, a przecież powinno być inaczej.
Co zepsułem?