c++ - 查看C++编译后生成的指令大小?

标签 c++ c caching assembly cpu

如果我告诉你我为什么问这个问题会更容易 - 以防我没有问正确的问题。内联函数时,您有时会使代码太大,从而导致 TLB 未命中。我也相信如果您过多地使用内联代码,您最终会得到的不是 L1 数据,而是 L1 指令缓存未命中。

如何确定编译后的汇编/机器代码有多大?可以测量吗?

最佳答案

大多数编译器将生成带有正确咒语的汇编语言输出(例如,-Fa 用于 VC++,-S 用于大多数其他)。

VC++ 还可以生成一个映射文件,通常更容易从中分类——它是由链接器生成的,因此它包括链接时优化之类的内容,并告诉您符号的地址。由于这是符号在可执行文件中的布局方式,因此连续地址之间的差异将告诉您每个地址的大小(填充后)。

关于c++ - 查看C++编译后生成的指令大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15509631/

相关文章:

c++ - 无锁读写器

c++ - 速度引用与按值

c++ - 没有复制构造函数的初始化变量

c - 为什么在为二维数组分配指针时需要指定行?

c# - ASP.NET - Window.Open(URL) - 文件被缓存,如何停止?

android - 清除应用程序数据库

c++ - 生成开区间均匀随机数

c++ - 我可以使用什么 Mac/iOS/Portable 库来格式化信息以打印到标签纸上?

C,使用参数列表有没有办法调用所有其他参数

docker - Composer从缓存安装软件包