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\n", kq);
  }
  clock_t end = clock();
  printf("result: %f\n", (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\n", kq);
  }
  clock_t end = clock();
  printf("result: %f\n", (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!

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?