分配从DLL导入的对象时的性能问题

时间:2014-06-10 15:14:48

标签: c++ performance memory-management dll visual-studio-debugging

我遇到了一个非常奇怪的问题。 我的c ++程序使用我编写的DLL。 此DLL导出一个类MyDocument。

#ifdef  WIN32
#   if defined(CORE_EXPORTS)
#       define CORE_API __declspec(dllexport)
#   elif defined(MCORE_IMPORTS)
#       define CORE_API __declspec(dllimport)
#   else
#       define CORE_API
#   endif
#else
#   define CORE_API
#endif

    class CORE_API MyDocument
    {
    public:
    ...
    };

当我的客户端程序尝试创建此对象的数组时,在调试模式下需要7秒以上(差不多10秒)。

MyDocument *docs = new MyDocuments[550];

我读过在env变量中使用_NO_DEBUG_HEAP = 1但它没有改变任何东西。

无论如何,我发现了一些奇怪的东西。我没有导出类MyDocument,而是将整个代码放在头文件中,这样我就可以通过包含它的头文件来使用它。 在这种情况下,相同的分配声明几乎是即时的。

MyDocument *docs = new MyDocuments[550];

谦虚地说,我不知道那里发生了什么。

有什么建议吗?

我的配置:使用VS Express 2008的XP。

Ž。

1 个答案:

答案 0 :(得分:0)

请检查您的compine单元中是否明确定义了CORE_EXPORTS或CORE_INPORTS,其中包含该头文件。