代码之家  ›  专栏  ›  技术社区  ›  TC.

为什么这个静态数组在发布版本中会导致一个非常长的“生成代码”步骤?

  •  3
  • TC.  · 技术社区  · 16 年前

    我最近在我的一个类中添加了一个静态查找数组,如:

    // MyClass.h
    class MyClass
    {
        static MyClass const s_fromIndex[1500];
    public:
        MyClass(size_t arg1, size_t arg2);
    
        static MyClass fromIndex(size_t index) { return s_fromIndex[index]; }
    
    }
    
    // MyClass.cpp
    MyClass const MyClass::s_fromIndex[1500] = 
    {
        MyClass(0, 1), MyClass(0, 2), MyClass(0, 3), MyClass(0, 4),
        ...
    };
    

    数组的原因是从索引到两个参数的计算非常昂贵(尽管在示例代码中看起来是这样)。由于索引限制为1500,所以我想改为从查找数组返回对象。

    类驻留在静态库项目中。在生成可执行代码的过程中,我突然注意到“在我的第二个项目中,我很快就注意到了”。以前这一步几乎可以立即完成。调试生成仍然很快完成。

    你知道为什么静态数组会在发布版本中导致一个非常长的“生成代码”步骤吗?编译器/链接器在这一步做什么?

    1 回复  |  直到 16 年前
        1
  •  0
  •   Joe    16 年前

    在不同的版本中是否启用了不同的优化?

    推荐文章