10%3 = 1 求余 位运算 10 &(3-1) = 1
string hello = "helloworld" int num = 4 "helloworld" 4 存放在代码段
C#: 代码段 : (只读,存放二进制指令,运行的时候加载进去)
数据段 : 全局变量, 静态全局变量
堆 : new出来的对象( 应用类型)
栈: 局部变量,函数参数,保存函数调用结束后,返回到那一个位置;
算法复杂度: 空间复杂度,时间复杂度
数据结构, 数组,list ,字典, 链表,树,hash表
时钟周期 : CPU频率, 主频(1G) 1024*1024*1024*1024
每次周期可以完成一些计算指令 ,加、减、乘、除、mov、移位 有些指令 需要几个周期才能完成
每个cpu 的说明书有 : 它支持多少指令,每个指令要用多少时钟周期;
int sum = 0;
for(int i = 0 ; i < 10000 ;i++){
sum+=i;
}
1+ 1 + 10000(1 + 1 + 1 ) =》 时钟周期
空间换时间:
降低内存消耗 -> 换得空间
降低时间消耗 - >节省 cpu 的计算
如 : 1、场景静态光照烘培
2、动画组件优化, 因为实时计算顶点位置 ,计算量较大
手段-> 编辑器模式下,采样数据到一个纹理里面 , 使用的时候,读取顶点位置
3、对象池 ( 严格来说 属于 缓存分配器, 本身并没有 额外消耗空间 )
时间换空间:
1、动画组件 ,
2、资源释放
包体优化 :
(1) 去掉不必要的资源,尽量重用资源,UI用九宫格代替 ,3D类型->最小的面数,做出最好的模型
(2)压缩资源 : png文件,声音,
(3)打空包 ;包不带资源,资源放在服务器,第一次启动从服务器下载
(4)文件超大,单独摘出来 - > unity包体分析工具
场景优化 :
阴影 :完全关闭 、 静态光照 、光照贴图
drawcall : 静态合批 ,动态 合批,GPU instancing
静态合批: 在内存上开销 ,但是可以一起绘制,减少模型的位置变换
遮挡剔除,LOD, 四叉树:尽可能的让场景少绘制物体、高低模切换
Shader优化:
减少 shader 数目, 大量shader 会导致 setpass call 增高
shader cache
纹理采样次数 texture2D(tex,i.uv) : -> unity中的filter Mode 滤波(采样算法)