代码优化_有效使用内存
学习记录
heisetiantang
这个作者很懒,什么都没留下…
展开
-
减小数据结构的尺寸
如果某些情况下,比如只需遍历使用obj_attr,那么在遍历的时候,obj_body这个巨大的数组也会被加载到内存,然后再加载到CPU的缓存中,但是实际上是不需要的,所以这个加载就浪费了很多的时间。所以可以改成这个样子。这样的话,访问obj_attr的时候,多余加载进来的就只有四个字节的obj_body,就不会浪费很多的时间了。当然,如果需要计算链表个数,也就是有只访问next的情况,那么obj_attr也可以改成指针的形式。原创 2023-03-24 16:38:40 · 107 阅读 · 0 评论 -
循环展开展开
主要原理: 处理器分支语句会表现的比较敏感,存在分支预测,而循环本质上也是分支类型,所以会降低程序的执行速度。选手必须在每个转弯的地方(也就是每个分支点)减速,所以跑到中的弯道少,就意味着跑完的所需时间比较少。所以循环中的判断也就是弯道,循环次数越多,弯道越多,也就需要更多的时间执行。这和开头说的缓存行大小有关系了,缓存行大小16字节,而四次循环展开的情况下,每次循环,刚好是一个缓存行大小,只需涉及一个缓存行的操作。而如果8次,那么需要32个字节,也就是需要加载两个缓存行,肯定更耗时,所以效率会降下来。原创 2023-03-06 12:25:19 · 276 阅读 · 0 评论