Một số blog và trang web đã nói về con trỏ là một trong những nguyên nhân có lợi vì "tốc độ thực thi" sẽ tốt hơn trong chương trình có con trỏ hơn là không có con trỏ. Điều tôi có thể giải quyết là:Con trỏ và tốc độ thực thi
Dereferencing một địa điểm duy nhất yêu cầu hai (hoặc nhiều) truy cập bộ nhớ (tùy thuộc vào số lần gián tiếp). Mà sẽ tăng thời gian thực hiện, so với nếu nó được sử dụng trực tiếp.
Chuyển con trỏ đến một kiểu dữ liệu lớn cho hàm, như cấu trúc có thể có lợi, vì chỉ địa chỉ của cấu trúc/liên kết được sao chép và nó không được truyền theo giá trị. Do đó, nó sẽ nhanh hơn trong trường hợp này.
Ví dụ chỉ bằng vũ lực đưa con trỏ mà không cần phải như:
int a, b, *p, *q, c, *d;
p = &a;
q = &b;
d = &c
// get values in a, b
*d = *p + *q; // why the heck this would be faster
c = a + b; // than this code?
Tôi đã kiểm tra đầu ra lắp ráp sử dụng gcc -S -masm=intel file.c
Phiên bản con trỏ có rất nhiều bộ nhớ tải và lưu trữ cho dereferences so với trực tiếp phương pháp.
Tôi có thiếu gì đó không?
Lưu ý: Câu hỏi không liên quan đến mã. Mã chỉ là một ví dụ. Không xem xét tối ưu hóa trình biên dịch.
"Có lợi" hoặc "tốt hơn" chỉ có thể được sử dụng so sánh một điều với một thứ khác. Vì vậy, câu hỏi là với những gì tác giả đã so sánh tốc độ thực thi. Liên quan đến cấu trúc truyền quastruct con trỏ, con trỏ được nhanh hơn - nếu cấu trúc tương ứng không được sử dụng nhiều. Liên quan đến những thứ khác, nó phụ thuộc rất nhiều. – glglgl
Trong trường hợp tốt nhất, cả hai phiên bản đều tương đương vì trình biên dịch có thể đã bị coi trọng nếu các kiểu liên quan được biết. Hãy thử biên dịch ví dụ của bạn bằng '-O2' và xem cách con trỏ được tối ưu hóa như thế nào. – matthias
Không xem xét tối ưu hóa trình biên dịch, điểm chính của câu hỏi là nếu sử dụng con trỏ luôn tăng tốc độ thực thi cho một số lý do "huyền diệu"? Hoặc các con trỏ nên được coi như các biến bình thường chứa một số nguyên mà chúng ta dự định sử dụng như một địa chỉ bộ nhớ, và theo một số cú pháp, chúng ta sẽ biết các trình biên dịch chúng ta sẽ sử dụng để giữ các giá trị như vậy. – phoxis