无用知识列表

程序运行

  • W i n d o w s \rm{Windows} Windows 的栈空间大小是 8   M B 8~\mathrm{MB} 8 MB,可以使用指令 -Wl,--stack=268435456 将运行栈提升到 256   M B 256~\mathrm{MB} 256 MB
  • M a c O S \rm{MacOS} MacOS 的栈空间一样是 8 M B 8\mathrm{MB} 8MB ,且暂时找不到方法扩大。
  • vector<T> \verb|vector<T>| vector<T> 的占用空间大小 2 n × s i z e o f ( T ) 2^n \times \mathrm{sizeof}(\verb|T|) 2n×sizeof(T) clear \verb|clear| clear 之后不会清空占用空间。
  • stack<T>, queue<T>, set<T>, map<T> \verb|stack<T>, queue<T>, set<T>, map<T>| stack<T>, queue<T>, set<T>, map<T> 的实际占用空间至少为 100 × s i z e o f ( T ) 100 \times \mathrm{sizeof}(\verb|T|) 100×sizeof(T) 左右,也就是说即使 empty() == true \verb|empty() == true| empty() == true,也是有空间占用的。这个问题涉及到 S T L \rm{STL} STL 的底层实现,具体原因比较复杂。
  • 函数前 4 4 4 个参数是用寄存器传参的,之后的所有的都是用栈传参,栈效率远低于寄存器。
  • 64bit \verb|64bit| 64bit 机器上,参数都是 64 64 64 位的,也就是说,传进去一个 int \verb|int| int ,实际上会放大成 long long \verb|long long| long long ,因此 printf("%lld", int) 可以输出正确答案(雾)。但是这在 32bit \verb|32bit| 32bit 上会错。
  • #pragma GCC optimize(2) 手动开 O 2 \rm{O2} 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")
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值