inline 的玄学妙用
  • 板块学术版
  • 楼主TH911
  • 当前回复23
  • 已保存回复23
  • 发布时间2025/8/2 22:03
  • 上次更新2025/8/3 14:25:30
查看原帖
inline 的玄学妙用
967959
TH911楼主2025/8/2 22:03

根据此处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\texttt{70pts}。于是我尝试了一下,加了一个 inline,然后就过了甚至于快读都被我删了。

不加 inline,在洛谷在线 IDE 上需要跑 1.6s\text{1.6s},本地需要 1.4s\text{1.4s}怎么洛谷还慢一些。LOJ 上最大用时 657ms\text{657ms},暂不确定是否是编译环境不同导致编译器加了 inline


所以,奉劝各位最好手动加上 inline。不然可能就会跟我一样炸掉。LOJ 的评测机是真快啊

2025/8/2 22:03
加载中...