Từ khóa restrict trong C
Ai có thể giải thích dùm em từ khóa restrict trong C đc không em mù nó rồi!
Em có đọc cái này thì hiều là restrict sơ sơ! thì em làm chương trình runtime code như sau:
void timer1(int* restrict p, int* q){
clock_t begin = clock();
int kq;
for(int i = 0; i < 2; i++){
kq = *p + q[i];
printf("kq: %d
", kq);
}
clock_t end = clock();
printf("result: %f
", (double)(end - begin) / CLOCKS_PER_SEC );
}
void timer2(int* p, int* q){
clock_t begin = clock();
int kq;
for(int i = 0; i < 2; i++){
kq = *p + q[i];
printf("kq: %d
", kq);
}
clock_t end = clock();
printf("result: %f
", (double)(end - begin) / CLOCKS_PER_SEC );
}
luôn luôn thời gian thực thi của timer2 < timer1. Nhưng nếu đọc mã assembly thì con trỏ chứa biến restrict sẽ không cần load lại nếu nó là quá trị không bị thay đổi thì timer1 < timer2 chứ mà em làm lại timer2 < timer1. ai có thể thông não giúp em!
restrict
In the C programming language, as of the C99 standard, restrict is a keyword that can be used in pointer declarations. The restrict keyword is a declaration of intent given by the programmer to the compiler. It says that for the lifetime of the pointer, only the pointer itself or a value directly derived from it (such as pointer + 1) will be used to access the object to which it points. This limits the effects of pointer aliasing, aiding optimizations. If the declaration of intent is not follo...