根据此处,inline
通常会被编译器自动忽略,并且编译器会自动 inline
一些小型函数来加速。
但是,我写P1541 [NOIP 2010 提高组] 乌龟棋时,因为需要滚动数组,于是就有一个 ask(x)
:
int ask(int x){
x--;
x%=5;
if(x<0){
x+=5;
}
return x;
}
其实就等价于 ((x-1)%5+5)%5
,应当可以算作「小型函数」,但是,遗憾的是,因为这一层函数调用导致我 TLE。
即使我想方设法卡常,最终也只有 70pts。于是我尝试了一下,加了一个 inline
,然后就过了。甚至于快读都被我删了。
不加 inline
,在洛谷在线 IDE 上需要跑 1.6s,本地需要 1.4s。怎么洛谷还慢一些。(LOJ 上最大用时 657ms,暂不确定是否是编译环境不同导致编译器加了 inline
)
所以,奉劝各位最好手动加上 inline
。不然可能就会跟我一样炸掉。LOJ 的评测机是真快啊