Pomiar czasu dla algorytmów

0

Hej! Mam do zrobienia projekt polegający na przeprowadzeniu pomiaru czasu dla konkretnych alogrytmów dla następujących zmiennych zaczynając od 1024 a kończąc na 1048576. Mają być zastosowane również dwa typy zmiennych: vector <double> i tablica typu int. Wydawało się, że mam wszystko w porządku, jednakże gdy dochodzi do pomiaru wyżej niż 65536 przy zmiennej dla tablicy, program po prostu się wywala.

Tak to wygląda przy deklaracji czasu dla zmiennych:

    for(int i=1, n=1024; i<=iters; i++, n*=2){
	vector<double> vec_double;
	gen_vector(vec_double, n);

	file<<n<<"\t"<<"Wektor\t\tDouble\t";

	VecSORTS(vec_double);

	file<<endl;

	vec_double.clear();
}

file<<endl;

	for(int i=1, n=1024; i<=iters; i++, n*=2){
	int *tab_int = new int [n];
	gen_table(tab_int, n);

	file<<n<<"\t"<<"Tablica\t\tint\t";

	TabSORTS(tab_int);

	file<<endl;

	delete [] tab_int;
}

file.close();

oraz przy generowaniu pojemnikow danych dla zmiennych:

void gen_table(int *tab, int n){
	for(int i=0; i<n; i++){
		tab[i] = (int)rand()/RAND_MAX;
	}
}
void gen_vector(vector<double> &tab, int n){
	double num;

	for(int i=0; i<n; i++){
		num = (double)rand()/RAND_MAX;
		tab.push_back(num);
	}
}

gdzie jest problem? może szukam nie tam gdzie powinnam, z góry dzięki!

0

A jaki błąd jest? Może pamieci brakuje?

0

Po prostu gdy dochodzi do pomiaru dla 131072 jest komunikat, że program.exe przestał działać i się wywala, dotyczy to tylko tablicy, z wektorem wszystko jest w porządku.

0

ale o co chodzi?

dla następujących zmiennych zaczynając od 1024 a kończąc na 1048576

nie ma pojąca co to niby ma oznaczać? Nie mam magicznej kuli.
Brakuje kontekstu co właściwie robisz.

Radzę skopuj cały kod do https://wandbox.org/ wprowadź dane wejściowe, wygeneruj linka i go wklej tutaj.
Napisz jaki algorytm testujesz i jakie zmiany chcesz przetestować.

Dobrze by było też zaprzyjaźnić się z debugerem. Jak leci crash to debbuger zatrzymuje program w miejscu problemu.
Można wtedy zobaczyć "call stack" chyli drogę jaką wątek programu przebył, by osiągnąć dane miejsce.
Debugger informuje też o naturze problemu: wyjątek, naruszenie pamięci, asercja.

0

problem rozwiązany, wątek można zamknąć/usunąć

1 użytkowników online, w tym zalogowanych: 0, gości: 1