程序运行
-
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")