C结构体打包技艺
失传的 C 结构体打包技艺(转) 转自: https://fishc.com.cn/forum.php?mod=viewthread&tid=83418&extra=page%3D2%26filter%3Dtypeid%26typeid%3D571 作者:Eric S. Raymond 原文链接:http://www.catb.org/esr/structure-packing 谁应阅读本文 如果你在内存容量受限的嵌入式系统中写程序,或者编写操作系统内核代码,就有必要了解这项技术。如果数据集巨大,应用时常逼近内存极限,这项技术会有所帮助。倘若你非常非常关心如何最大限度地减少处理器缓存段(cache-line)未命中情况的发生,这项技术也有所裨益。 2013 年底,我大量应用了一项 C 语言优化技术,这项技术是我早在二十余年前就已掌握的,但彼时之后,鲜有使用。 通过精心调整结构成体员的顺序,可以在这种情况下大幅减少内存占用。其效果显著——在上述案例中,可以减少 40% 的内存空间。程序应用于更大的软件仓库,也不会因内存耗尽而崩溃。 事出有因。计算机科学课程(正确地)引导人们远离微观优化,转而寻求更理想的算法。计算成本一路走低,令压榨内存的必要性变得越来越低。旧日里,黑客们通过在陌生的硬件架构中跌跌撞撞学习 —— 如今已不多见。 ...