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

Performance issue when allocating an object imported from a DLL

本文关键字:性能 问题 对象 分配 DLL 导入      更新时间:2023-10-16

我遇到了一个非常奇怪的问题。我的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];
老实说,我不知道那里发生了什么。

有什么建议吗?

My config: XP with VS Express 2008.

z

请检查CORE_EXPORTS或CORE_INPORTS是否在包含该头文件的复杂单元中明确定义。