Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C和C的优化工具++; < Windows和Linux系统的哪些工具可以用来确定与VisualC++和GCC生成的代码相关的对齐问题、缓存缺失和其他参数?我可以使用这些工具来确定结构的对齐方式,从而避免编译器生成的填充吗?_C++_C_Visual Studio_Optimization_Gcc - Fatal编程技术网

C和C的优化工具++; < Windows和Linux系统的哪些工具可以用来确定与VisualC++和GCC生成的代码相关的对齐问题、缓存缺失和其他参数?我可以使用这些工具来确定结构的对齐方式,从而避免编译器生成的填充吗?

C和C的优化工具++; < Windows和Linux系统的哪些工具可以用来确定与VisualC++和GCC生成的代码相关的对齐问题、缓存缺失和其他参数?我可以使用这些工具来确定结构的对齐方式,从而避免编译器生成的填充吗?,c++,c,visual-studio,optimization,gcc,C++,C,Visual Studio,Optimization,Gcc,要确定缓存未命中,您需要一个CPU级别的探查器,如oprofile或vtune,或者一个动态检测工具,如valgrind和cachegrind 要查找结构上的对齐问题,有一个名为pahole的工具,用于包含DWARF调试信息的对象文件。如果要避免在数据结构中填充,可以使用\uu属性((uuuu packed_u))用于gcc或microsoft visual studio\35; pragma(pack(push,1))在声明结构之前,在声明结构之后。 您还可以将命令行选项提供给microsof

要确定缓存未命中,您需要一个CPU级别的探查器,如
oprofile
vtune
,或者一个动态检测工具,如
valgrind
cachegrind


要查找结构上的对齐问题,有一个名为
pahole
的工具,用于包含
DWARF
调试信息的对象文件。

如果要避免在数据结构中填充,可以使用
\uu属性((uuuu packed_u))
用于gcc或microsoft visual studio
\35; pragma(pack(push,1))
在声明结构之前,在声明结构之后。
您还可以将命令行选项提供给microsoft visual studio编译器/Zp1,用于按一个字节进行打包,或使用gcc-falign function=8,用于按一个字节边界进行打包。您的代码库可能会更小,但这可能会对您的性能产生严重的负面影响…

自动填充可以消除对齐问题…在堆栈溢出时,您的问题应该用问题而不是命令来表达,否则您会让许多潜在的回答者望而却步。我编辑了你的帖子来反映这一点。谢谢你的回复。有没有类似pahole的windows工具?顺便说一句,您能否详细介绍或介绍有关在vtune/kcachegrind中启用缓存参数的教程?不仅仅是性能。如果您有一个结构{char,int},int将不再正确对齐,这意味着它将不再以原子方式更新。。