
都是
if/else本身不慢,但分支预测失败会导致流水线冲刷,代价10–20周期;关键在分支是否可预测,可用__builtin_expect提示编译器优化布局,或用查表/位运算消除分支。
new返回*T类型的零值指针,仅分配并清零内存,不初始化逻辑或创建可直接使用的slice/map/channel;make才用于构造可立即使用的引用类型。
Stack是后进先出(LIFO),Queue是先进先出(FIFO);二者API强制约束访问顺序,不支持随机索引、线程不安全,应优先使用泛型版本并预估容量。
私有模块发布必须配置GOPRIVATE并确保go.mod路径与仓库URL一致。需设置exportGOPRIVATE="git.example.com/internal/,github.com...
栈回退是throw触发后按构造逆序调用已构造局部对象析构函数的过程,需依赖编译器生成的unwind表查找析构信息,开销与栈深度和对象数量正相关。
Go值类型传参是浅层内存块拷贝:基本类型字段全复制,引用类型字段仅复制头部;结构体超64字节、高频调用或含大数组时应改用指针传参。
Go的xml.Unmarshal将XML映射为结构体后,若直接用for_,v:=range遍历并赋值,实际修改的是副本而非原数据,导致xml.Marshal输出仍为原始值。正确做法是通过索引或取地址方...
std::remove_cvref用于精准剥离const、volatile和引用,还原表达式的“裸值类型”,避免std::decay意外退化数组或函数类型。
using比typedef更通用,尤其在模板场景下不可替代;C++11引入using主要为解决模板类型别名问题,typedef不支持模板参数,而using可定义泛型别名如templateusingVe...
Archetype通过将相同组件集合的实体聚合成连续内存块并按列存储组件数据,使CPU缓存预取高效,遍历时避免随机访问;SparseSet用dense/sparse双数组实现O(1)实体ID查找。