Witam, w ramach nauki testuje czas zapisu przy użyciu wskaznika i bez niego dynamicznie alokując pamięć RAM.
Ale nie wiem czy coś mi nie wyszło, czy gdzieś popełniłem błąd, podczas nauki dowiedziałem się że, wskazniki wydatnie zwiększają wydajność jeśli chodzi o szybkość zapisu danych do tablicy, przy bardzo dużej ilości operacji do wykonania . Ale w trakcie testów, w kodzie poniżej czasy dla dużych danych wejściowych przy użyciu wskaznika nie są aż tak imponująco krótkie w porównaniu do metody bez ich użycia . Czy gdzieś popełniłem błąd ?
np: dane wejsciowe :
Ile liczb 412345678 z przedziału 12345
#include <iostream>
#include <ctime>
#include <cstdio>
#include <cstdlib>
clock_t start, stop;
double timeSeconds;
int main()
{
int ileLiczb, range;
std::cout <<'\n'<< "Ile Liczb pseudolosowych zaalokowac dynamicznie? :";
std::cin >> ileLiczb;
std::cout << "Jaki przedzial? od 1 do ==>:";
std::cin >> range;
//inicjalizacja generatora liczb pseudolosowych
srand(time(NULL));
int *Tab;
//Dynamiczna alokacja tablicy
Tab = new int [ileLiczb];
//Stoper - pomiar czasu zapisu inicjacja
start = clock();
//zapis danych do tablicy bez uzycia wskaznika
for (int i = 0; i < ileLiczb; i++) {
Tab[i] = rand() % range + 1;
}
//Stoper - pomiar czasu zapisu koniec i podanie wyniku
stop = clock();
timeSeconds = (double)(stop - start)/CLOCKS_PER_SEC;
std::cout <<'\n'<< "czas zapisu (bez wskaznika) = " << timeSeconds << ".s" << std::endl ;
delete [] Tab;
//Dynamiczna alokacja tablicy ze wskaznikiem
Tab = new int [ileLiczb];
//Inicjalizacja wskaznika na adres zerowego elemntu tablicy
int *w = Tab;
//Stoper - pomiar czasu zapisu inicjacja
start = clock();
//zapis danych do tablicy z uzyciem wskaznika
for (int i = 0; i < ileLiczb; i++) {
*w = rand() % range + 1;
w++;
}
//Stoper - pomiar czasu zapisu koniec i podanie wyniku
stop = clock();
timeSeconds = (double)(stop - start)/CLOCKS_PER_SEC;
std::cout << "czas zapisu (ze wskaznikem) = " << timeSeconds << ".s" << std::endl <<'\n';
delete [] Tab;
getchar();
getchar();
return 0;
}