今天是2024年11月22日 第47周 星期五

代人,时大变了。

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

火車頭 (信息學競賽)

出自Akarin
於 2020年8月16日 (日) 22:49 由 RainbowDash討論 | 貢獻 所做的修訂
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)
跳至導覽 跳至搜尋

火車頭是一種信息學競賽中使用的,用來提升代碼運行速度的預處理優化。一般在正規的比賽中被禁止,在正式的開發中亦無應用。通常火車頭中包含大量的冗餘優化以及玄學成分

示例

這是一個常見的火車頭 <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> (事實上對於此份優化,僅保留前四行即可)