Zastanawiam się, czy jest to oczekiwane zachowanie w C++. Poniższy kod jest uruchamiany na około 0,001 MS:Powolne pisanie do tablicy w C++
for(int l=0;l<100000;l++){
int total=0;
for(int i = 0; i < num_elements; i++)
{
total+=i;
}
}
Jednak jeśli wyniki są zapisywane na tablicy, czas realizacji pędy do 15 MS:
int *values=(int*)malloc(sizeof(int)*100000);
for(int l=0;l<100000;l++){
int total=0;
for(unsigned int i = 0; i < num_elements; i++)
{
total+=i;
}
values[l]=total;
}
mogę docenić, że pisanie do tablica wymaga czasu, ale czy czas jest proporcjonalny?
Zdrówko wszyscy
Twoje pytanie mówi C, ale twoje tagi mówią C++. Który to? –
Przepraszam, ściśle C++, ale jeśli deklaracje int zostały przeniesione poza pętle for, to C – Ljdawson
@Laurence - Nie, twój kod jest całkowicie standardowy w C99, a większość kompilatorów C89 zaakceptuje składnię, której używasz. –