如何解决C和C ++的优化工具
| 我可以使用哪些Windows和Linux系统工具来确定对齐问题,缓存未命中以及与Visual C ++和GCC生成的代码相关的其他参数?我可以使用这些工具来确定结构的对齐方式,以便避免编译器生成的填充吗?解决方法
要确定高速缓存未命中,您需要一个CPU级别的探查器,例如
oprofile
或vtune
,或者一个动态检测工具,例如valgrind
和cachegrind
。
要查找结构上的对齐问题,有一个名为pahole
的工具用于带有DWARF
调试信息的目标文件。
, 如果要避免在数据结构中进行填充,则可以在结构声明之前使用gcc或Microsoft Visual Studio中的__attribute__((__packed__))
,在结构声明后使用#pragma(pop)
。
您还可以将命令行选项提供给Microsoft Visual Studio编译器/ Zp1,以便将其打包在一个字节上http://msdn.microsoft.com/zh-cn/library/xh3e3fd0(v=vs.80).aspx或使用gcc- falign-function = 8,用于在1字节边界处打包。您的代码库会更小,但是这可能会对您的性能产生严重的负面影响...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。