【发布时间】:2010-10-11 03:18:15
【问题描述】:
上周,我用 C# 编写了几行代码,将一个大型文本文件(300,000 行)写入字典。写了十分钟,不到一秒就执行了。
现在我正在将该段代码转换为 C++(因为我需要在旧的 C++ COM 对象中使用它)。到目前为止,我已经花了两天时间。 :-( 虽然生产力差异本身就令人震惊,但我需要一些建议。
加载需要 7 秒,甚至更糟:之后释放所有 CStringW 需要的时间正好是这么多。这是不可接受的,我必须想办法提高性能。
有没有机会我可以分配这么多的字符串而不会看到这种可怕的性能下降?
我现在的猜测是,我必须将所有文本填充到一个大数组中,然后让我的哈希表指向该数组中每个字符串的开头并删除 CStringW 内容。
但在此之前,各位 C++ 专家有什么建议吗?
编辑:我对自己的回答如下。我意识到这对我来说是最快的路线,并且也踏上了我认为正确的方向 - 朝着更多托管代码。
【问题讨论】:
-
您确实需要向我们展示您现在正在使用的代码,您的描述太模糊,无法提供输入。
-
您肯定需要提供有关您的数据结构的更多信息...
-
在我熟悉 .Net 之前,从 C++ 过渡到 C#——不知道框架(在我的例子中是 VCL)是如何相似或不同的——与其他方式一样具有挑战性大约。没有必要责怪 C++ 来问你的问题。
-
在c#中你说你使用字典,你在C++代码中使用的是什么集合?
-
另外,您使用的是哪个编译器?如果是 VS 6.0 请考虑更改它,那个编译器很糟糕。
标签: c++ mfc memory-management