编译时间优化
减少模板实例化
- 减少使用次数
- 减少嵌套层数
多线程编译wasm
编译单个较大的wasm文件是一项很耗时的工作,可以将一个wasm拆分成耦合度最低的n个wasm文件(n为编译线程数),在多个线程同时编译,最后再放到一个线程中链接
启动时间优化
- 预取资源
IO优化
尽量避免一次将整个文件读入内存,尤其是大文件,应该分段读取
零拷贝
减少上下文切换次数
Windows
- 使用重叠I/O
- WSASend/WSARecv批处理
函数调用优化
内联函数
使用迭代等其他方法代替递归
打表
说白了就是空间换时间,例如:伪随机数表
常数级优化
- 尽可能使用定点数代替浮点数
- 对于浮点数,尽可能使用乘法运算代替浮点除法,例如当除数为常数时,将除法运算写成乘这个常数的倒数
访问一维数组要比多维数组快
分支预测优化
使用likely和unlikely函数
内存对齐
缓存行对齐
缓存优化
结构优化
- 聚合代替继承
- 函数指针代替单函数类
nothrow化
抛出异常是比较耗时的操作,若异常不是小概率事件,请使用返回错误码等方式代替抛出异常
内存优化
栈压缩优化内存占用
池化
使用内存池和线程池
多线程优化
使用协程代替线程
锁优化
竞争激烈用悲观锁,否则乐观锁
通信优化
进程间通信使用Unix domain socket代替本机地址
网络优化
- 设置合适的MTU
- 路由器固件更新
- DNS优化
- 常用的域名写进hosts
- 信道优化
- (无线网络)信号放大
业务逻辑优化
使用其他验证方法替代慢哈希