01/10/2018, 11:24

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!

en.wikipedia.org

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...

Bài liên quan
0