草庐IT

c++ - 可以强制 GCC 为内存对齐对象生成有效的构造函数吗?

我正在优化在我们应用程序的最内层循环之一中调用的构造函数。有问题的类大约100字节宽,由一堆ints、floats、bools和琐碎的结构组成,以及应该是可简单复制的(它有一个重要的默认构造函数,但没有析构函数或虚函数)。它的构造足够频繁,以至于在此ctor中花费的每纳秒时间,我们需要购买大约6,000美元的额外服务器硬件。但是,我发现GCC并没有为此构造函数发出非常有效的代码(即使设置了-O3-march等)。GCC的构造函数实现,通过初始化列表填充默认值,运行大约需要34ns。如果我使用手写函数代替这个默认构造函数,该函数使用各种SIMD内在函数和指针数学直接写入对象的内存空间,构

c++ - 可以强制 GCC 为内存对齐对象生成有效的构造函数吗?

我正在优化在我们应用程序的最内层循环之一中调用的构造函数。有问题的类大约100字节宽,由一堆ints、floats、bools和琐碎的结构组成,以及应该是可简单复制的(它有一个重要的默认构造函数,但没有析构函数或虚函数)。它的构造足够频繁,以至于在此ctor中花费的每纳秒时间,我们需要购买大约6,000美元的额外服务器硬件。但是,我发现GCC并没有为此构造函数发出非常有效的代码(即使设置了-O3-march等)。GCC的构造函数实现,通过初始化列表填充默认值,运行大约需要34ns。如果我使用手写函数代替这个默认构造函数,该函数使用各种SIMD内在函数和指针数学直接写入对象的内存空间,构