Mi stavo chiedendo se questo comportamento è previsto in C++. Il seguente codice viene eseguito in circa 0.001 ms:Scrittura lenta su matrice in C++
for(int l=0;l<100000;l++){
int total=0;
for(int i = 0; i < num_elements; i++)
{
total+=i;
}
}
Tuttavia, se i risultati sono scritti in un array, il tempo di esecuzione spara fino a 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;
}
posso apprezzare che per iscritto al l'array richiede tempo ma il tempo è proporzionato?
Saluti tutti
La tua domanda dice C, ma i tuoi tag dicono C++. Qual é? –
scusate, rigorosamente C++ ma se le dichiarazioni int sono state spostate all'esterno dei cicli for allora C – Ljdawson
@Laurence - No, il vostro codice è perfettamente standard in C99 e la maggior parte dei compilatori C89 accetta la sintassi che usate. –