ic性能测试

前言

打算暑假里在ic搞个简单算法竞赛忽悠鼓励一些人加入算法竞赛圈子,为了吸引人打算允许触发器参赛并放大时限,于是打算测试一下ic触发器/Lua的性能

本地测试

测试CPU:AMD Ryzen 7 9700X

测试项目 C++ Lua in ic Lua Python ic触发器
for循环空跑1e8次 0.018s 0.018s 0.403s 1.29s 5s
密集浮点计算1e7次 0.270s 0.968s 2.395s 4.758s 290s¹
线性筛全家桶到1e7 0.240s 2.748s 8s² 6.902s ——³
  1. N=1e6时,运行约29s,计算得出此数据
  2. N=1e7时,命令行返回lua: not enough memory,N改为1e6时用时0.8s,计算得出此数据
  3. 线性筛全家桶码量略大,暂未在ic触发器中复刻

另外,在洛谷ide测试了for循环空跑密集浮点计算,以下为测试结果

测试项目 C++14(GCC9) Lua Python3 PyPy3
for循环空跑1e8次 0.144s 0.317s 6.75s(计算得出) 0.069s
密集浮点计算1e7次 0.506s 5.03s(计算得出) 12.4s(计算得出) 1.465s

更复杂的任务我们以后再测试

可见触发器在面对更加困难的任务时效率衰减相当明显,这几乎断了我们允许触发器参赛的路子。

有趣的是本地运行的触发器for循环空跑薄纱洛谷跑的Python,所以触发器已经超越了Python!

触发器是世界上最好的编程语言!

我们发现ic中使用的Lua简直快到飞起,比官方的Lua快了数倍。起初我以为是因为ToLua使用了LuaJIT,但是GPT否定了。那么为什么Lua in ic会快这么多呢,有知道的大佬可以发在评论区。

后记

本测试后两项代码取自感性理解洛谷评测机速度(2025.06.01) by chen_zhe,并由GPT-4o修改为Lua和Python版本,方块菌翻译密集浮点计算为触发器版本,可以在ic搜索密集浮点计算(触发器复刻)测试,但是要做好卡死的准备

参考资料

[1] 感性理解洛谷评测机速度(2025.06.01) by chen_zhe

[2] ChatGPT