通过加上restrict关键字,编程者可提示编译器:在该指针的生命周期内,其指向的对象不会被别的指针所引用。(引自别人说)
我的理解猜测:这样可以让编译器知道在这指针的生命周期内,它指向的内容不会变化。根据它不会变化的提示,相当于它成了一个常量,不再变化。程序中一般是运行的变量,时时刻刻都在变化。这样的提示,给了程序一定的确定性,根据这样的确定性,提升效率。(不要看)
编译器并不是机械地将代码翻译为机械语言,它会进行优化,根据指向不再发生变化这,可以进行优化。 eg: a = 0; b = 3; return a +b;
此时如果程序确定,a 是 0 ,那么就直接返回b , 不用执行 a + b; 的计算。
(适应面可能不那么广)
程序并不是随机的,而是有确定的输入的。那么我对一个数,输入6,那么只要它不再变化,以后引用它的代码,我都可以用立即数6,去取代。而不是访问内存再去寻找。
(这是大多数情况)
如果是从运行中获取的数据,估计会一点优化效果也没有。因为此时代码已经生成完成,但是因为输入是个不能确定的数,所以我们不能用一个立即数来去代替。
如果是内嵌在代码中的数据,那么是可以优化的。