据我所知,对现在的编译器而言,函数是否内联与标不标注inline的关系已经不大了,尤其在O2优化下,编译器自己会做决定。但是这道题中,快速幂加不加inline速度差距很大(见提交1和提交2)。
在Compiler Explorer上查看两份代码编译出的汇编代码,无论是gcc还是clang,加不加inline除了标号外都只有一个区别,即不加inline会把相应的函数编译成实体,然而,后面并没有调用它,而是直接把函数在调用处展开。
此外,我在本地造了一组随机大数据来测试,发现加不加inline的两份代码所花的时间几乎一致。我很迷惑,是什么导致在洛谷上加不加inline会导致这样大的区别。