今天是2024年12月24日 第52周 星期二

代人,时大变了。

我们生活在大地上,但我们的梦想超越天空。

火车头 (信息学竞赛)

来自Akarin
跳到导航 跳到搜索

火车头是一种信息学竞赛中使用的,用来提升代码运行速度的预处理优化。一般在正规的比赛中被禁止,在正式的开发中亦无应用。通常火车头中包含大量的冗余优化以及玄学成分

示例

这是一个常见的火车头 <syntaxhighlight lang = "cpp">

  1. pragma GCC optimize(3)
  2. pragma GCC target("avx")
  3. pragma GCC optimize("Ofast")
  4. pragma GCC optimize("inline")
  5. pragma GCC optimize("-fgcse")
  6. pragma GCC optimize("-fgcse-lm")
  7. pragma GCC optimize("-fipa-sra")
  8. pragma GCC optimize("-ftree-pre")
  9. pragma GCC optimize("-ftree-vrp")
  10. pragma GCC optimize("-fpeephole2")
  11. pragma GCC optimize("-ffast-math")
  12. pragma GCC optimize("-fsched-spec")
  13. pragma GCC optimize("unroll-loops")
  14. pragma GCC optimize("-falign-jumps")
  15. pragma GCC optimize("-falign-loops")
  16. pragma GCC optimize("-falign-labels")
  17. pragma GCC optimize("-fdevirtualize")
  18. pragma GCC optimize("-fcaller-saves")
  19. pragma GCC optimize("-fcrossjumping")
  20. pragma GCC optimize("-fthread-jumps")
  21. pragma GCC optimize("-funroll-loops")
  22. pragma GCC optimize("-fwhole-program")
  23. pragma GCC optimize("-freorder-blocks")
  24. pragma GCC optimize("-fschedule-insns")
  25. pragma GCC optimize("inline-functions")
  26. pragma GCC optimize("-ftree-tail-merge")
  27. pragma GCC optimize("-fschedule-insns2")
  28. pragma GCC optimize("-fstrict-aliasing")
  29. pragma GCC optimize("-fstrict-overflow")
  30. pragma GCC optimize("-falign-functions")
  31. pragma GCC optimize("-fcse-skip-blocks")
  32. pragma GCC optimize("-fcse-follow-jumps")
  33. pragma GCC optimize("-fsched-interblock")
  34. pragma GCC optimize("-fpartial-inlining")
  35. pragma GCC optimize("no-stack-protector")
  36. pragma GCC optimize("-freorder-functions")
  37. pragma GCC optimize("-findirect-inlining")
  38. pragma GCC optimize("-fhoist-adjacent-loads")
  39. pragma GCC optimize("-frerun-cse-after-loop")
  40. pragma GCC optimize("inline-small-functions")
  41. pragma GCC optimize("-finline-small-functions")
  42. pragma GCC optimize("-ftree-switch-conversion")
  43. pragma GCC optimize("-foptimize-sibling-calls")
  44. pragma GCC optimize("-fexpensive-optimizations")
  45. pragma GCC optimize("-funsafe-loop-optimizations")
  46. pragma GCC optimize("inline-functions-called-once")
  47. pragma GCC optimize("-fdelete-null-pointer-checks")
  48. pragma GCC optimize(2)

</syntaxhighlight> (事实上对于此份优化,仅保留前四行即可)