Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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+;中的类/函数模板占用了多少二进制文件+;?_C++_Templates - Fatal编程技术网

C++ C+;中的类/函数模板占用了多少二进制文件+;?

C++ C+;中的类/函数模板占用了多少二进制文件+;?,c++,templates,C++,Templates,我是一名游戏开发人员,我经常发现自己为自己的需要编写专门的模板化容器 在观看了我(现在)最喜欢的一次cppcon演讲后,我感兴趣的是找到给定类/函数模板占用的最终二进制文件的百分比,以确定某些提升是否有益 ,Nicolas提到育碧软件的程序员使用他们的内部.obj分析器来确定他们的数组类占用了其总二进制大小的约80%,然后通过提升将其降至约15%(在调试目标中) 我想知道如何编写这样一个工具。具体来说,我正在寻找一种工具,它可以告诉我: 给定类的非混合名称和名称,类的所有成员函数和非成员函数占总

我是一名游戏开发人员,我经常发现自己为自己的需要编写专门的模板化容器

在观看了我(现在)最喜欢的一次cppcon演讲后,我感兴趣的是找到给定类/函数模板占用的最终二进制文件的百分比,以确定某些提升是否有益

,Nicolas提到育碧软件的程序员使用他们的内部.obj分析器来确定他们的
数组
类占用了其总二进制大小的约80%,然后通过提升将其降至约15%(在调试目标中)

我想知道如何编写这样一个工具。具体来说,我正在寻找一种工具,它可以告诉我:

  • 给定类的非混合名称和名称,类的所有成员函数和非成员函数占总二进制大小的百分比
  • 给定未混合名称的单个函数(成员或非成员)占总二进制大小的百分比
  • 我想知道如何在windows和linux环境中对使用gcc、clang和Microsoft编译器编译的代码执行此操作

    例如,我想要一些大致如下的东西:

    ./<toolname> <compiler sepecific options and/or whatever> <class/function name> \
    <list of object files>
    
    /\
    
    如果要求函数的大小:

    Summary for function <name>:
    Total Size: <size in bytes> (<percentage>)
    
    Summary for class <name>:
    Total Size: <size in bytes> (<percentage>)
        member function <name>: <size> (<percentage>)
        ...
        non-member function <name>: <size> (<percentage>)
        ...
    
    函数摘要:
    总尺寸:()
    
    如果要求班级规模:

    Summary for function <name>:
    Total Size: <size in bytes> (<percentage>)
    
    Summary for class <name>:
    Total Size: <size in bytes> (<percentage>)
        member function <name>: <size> (<percentage>)
        ...
        non-member function <name>: <size> (<percentage>)
        ...
    
    课程总结:
    总尺寸:()
    成员函数:()
    ...
    非成员函数:()
    ...
    
    我相信我自己可以用一个稍微简单的程序来实现这一点,但我认为最好先在这里询问,以防有一些内置或免费提供的CLI工具组合可用于获取此类信息


    如果您的解决方案包含一组有良好文档记录的工具,我不需要解释。但是,如果您编写自定义工具,我想大致了解一下您的方法。

    您可以使用调试信息编译程序,因此每个符号位置的符号表将显示在可执行文件头中。例如,使用readelf或objdump获取此信息。

    您可以使用调试信息编译程序,因此每个符号位置的符号表将出现在可执行文件头中。例如,使用readelf或objdump获取此信息。

    您不需要编写这样的工具。链接器映射文件将为您提供所有这些信息。您不需要编写这样的工具。链接器映射文件将为您提供所有这些信息。