无用知识列表

程序运行

  • \(\rm{Windows}\) 的栈空间大小是 \(8~\mathrm{MB}\),可以使用指令 -Wl,--stack=268435456 将运行栈提升到 \(256~\mathrm{MB}\)
  • \(\rm{MacOS}\) 的栈空间一样是 \(8\mathrm{MB}\) ,且暂时找不到方法扩大。
  • \(\verb|vector<T>|\) 的占用空间大小 \(2^n \times \mathrm{sizeof}(\verb|T|)\)\(\verb|clear|\) 之后不会清空占用空间。
  • \(\verb|stack<T>, queue<T>, set<T>, map<T>|\) 的实际占用空间至少为 \(100 \times \mathrm{sizeof}(\verb|T|)\) 左右,也就是说即使 \(\verb|empty() == true|\),也是有空间占用的。这个问题涉及到 \(\rm{STL}\) 的底层实现,具体原因比较复杂。
  • 函数前 \(4\) 个参数是用寄存器传参的,之后的所有的都是用栈传参,栈效率远低于寄存器。
  • \(\verb|64bit|\) 机器上,参数都是 \(64\) 位的,也就是说,传进去一个 \(\verb|int|\) ,实际上会放大成 \(\verb|long long|\) ,因此 printf("%lld", int) 可以输出正确答案(雾)。但是这在 \(\verb|32bit|\) 上会错。
  • #pragma GCC optimize(2) 手动开 \(\rm{O2}\)
  • 火车头:
    #pragma GCC optimize(2)
    #pragma GCC optimize(3)
    #pragma GCC optimize("Ofast")
    #pragma GCC optimize("inline")
    #pragma GCC optimize("-fgcse")
    #pragma GCC optimize("-fgcse-lm")
    #pragma GCC optimize("-fipa-sra")
    #pragma GCC optimize("-ftree-pre")
    #pragma GCC optimize("-ftree-vrp")
    #pragma GCC optimize("-fpeephole2")
    #pragma GCC optimize("-ffast-math")
    #pragma GCC optimize("-fsched-spec")
    #pragma GCC optimize("unroll-loops")
    #pragma GCC optimize("-falign-jumps")
    #pragma GCC optimize("-falign-loops")
    #pragma GCC optimize("-falign-labels")
    #pragma GCC optimize("-fdevirtualize")
    #pragma GCC optimize("-fcaller-saves")
    #pragma GCC optimize("-fcrossjumping")
    #pragma GCC optimize("-fthread-jumps")
    #pragma GCC optimize("-funroll-loops")
    #pragma GCC optimize("-fwhole-program")
    #pragma GCC optimize("-freorder-blocks")
    #pragma GCC optimize("-fschedule-insns")
    #pragma GCC optimize("inline-functions")
    #pragma GCC optimize("-ftree-tail-merge")
    #pragma GCC optimize("-fschedule-insns2")
    #pragma GCC optimize("-fstrict-aliasing")
    #pragma GCC optimize("-fstrict-overflow")
    #pragma GCC optimize("-falign-functions")
    #pragma GCC optimize("-fcse-skip-blocks")
    #pragma GCC optimize("-fcse-follow-jumps")
    #pragma GCC optimize("-fsched-interblock")
    #pragma GCC optimize("-fpartial-inlining")
    #pragma GCC optimize("no-stack-protector")
    #pragma GCC optimize("-freorder-functions")
    #pragma GCC optimize("-findirect-inlining")
    #pragma GCC optimize("-fhoist-adjacent-loads")
    #pragma GCC optimize("-frerun-cse-after-loop")
    #pragma GCC optimize("inline-small-functions")
    #pragma GCC optimize("-finline-small-functions")
    #pragma GCC optimize("-ftree-switch-conversion")
    #pragma GCC optimize("-foptimize-sibling-calls")
    #pragma GCC optimize("-fexpensive-optimizations")
    #pragma GCC optimize("-funsafe-loop-optimizations")
    #pragma GCC optimize("inline-functions-called-once")
    #pragma GCC optimize("-fdelete-null-pointer-checks")
    
原文地址:https://www.cnblogs.com/juruohjr/p/15699578.html