Tôi đã tự hỏi liệu đây có phải là hành vi được mong đợi trong C++ hay không. Đoạn code dưới đây chạy vào khoảng 0,001 ms:Viết chậm vào mảng trong C++
for(int l=0;l<100000;l++){
int total=0;
for(int i = 0; i < num_elements; i++)
{
total+=i;
}
}
Tuy nhiên nếu kết quả được ghi vào một mảng, thời gian thực hiện bắn lên đến 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;
}
tôi có thể hiểu rằng văn bản cho mảng mất thời gian nhưng là thời gian tỷ lệ?
Chúc mừng mọi người
Câu hỏi của bạn cho biết C, nhưng thẻ của bạn nói C++. Đó là cái nào? –
xin lỗi, đúng là C++ nhưng nếu các khai báo int được chuyển ra ngoài vòng lặp thì C – Ljdawson
@Laurence - Không, mã của bạn hoàn toàn tiêu chuẩn trong C99 và hầu hết các trình biên dịch C89 sẽ chấp nhận cú pháp bạn sử dụng. –