【问题标题】:Win32 application (VS2010) runs much slow then a console in Eclipse (c++)Win32 应用程序 (VS2010) 运行速度比 Eclipse (c++) 中的控制台慢得多
【发布时间】:2011-08-22 11:11:20
【问题描述】:

我有一个在 Eclipse c++ 中创建的项目。该项目调用了一个执行大量循环(数千次)的函数来计算结果。

我在 Eclipse 中运行它需要 1 分钟(约 70 秒)。

我想为项目添加一个 GUI,所以我在 VisualStudio2010 中打开了一个 WinForm (Win32) 项目,并将项目的所有文件从 eclipse 目录移动到新目录(为 VS2010 创建)。

现在,当我运行表单时,该函数需要 4-5 分钟。我试图取消进度条但不是问题,所以我明白长时间不是因为GUI。

我认为问题出在VS2010的编译中。我尝试更改一些优化属性,但项目无法编译...

如何减少运行时间?

谢谢!

【问题讨论】:

  • 你在eclipse中使用什么样的编译器? VS2010中是否使用了C++托管代码?
  • 在 Eclipse 中我使用 g++。我在 VS2010 中为 WinForm 使用托管代码

标签: c++ eclipse visual-studio-2010 optimization compiler-construction


【解决方案1】:

基本上你回答了你自己的问题:

我认为问题出在VS2010的编译中。我试图改变 一些优化属性,但项目无法编译...

然而,这很难回答,因为两个编译器都有很多优化选项,很难说哪个选项使它更快/更慢。也有可能(而且很可能是)MS 编译器无法生成与 Eclipse 编译器完全相同或相似的代码。

您的选择是“玩”VS 编译器的优化开关,看看它是否有帮助。您可以尝试将它的选项与 Eclipse 的选项进行比较以找出差异,但很可能它们会相差太大。

正如@Zuljin 正确提到的,还要检查您选择的是 Win32 项目,而不是 CLR(Windows 窗体)应用程序。如果您使用的是 CLR 项目,那么它的运行速度自然会比 Native 程序类型慢。

【讨论】:

  • 您能给我一些提示以找到我需要更改的优化吗?谢谢!
  • 问题是我必须使用 CLR 因为托管 c++
  • 如果您使用托管 C++,则无法获得与原生 C++ 相同的性能。这可能是您的代码变慢的主要原因。要么为 GUI 使用本机 windows 库,要么看看你是否可以优化你的代码。如果优化得当,它很可能可以以几乎与本机相同的速度运行。然而,这是一个单独的问题。
【解决方案2】:

我敢打赌 VS2010 中的调试器

使用优化的设置进行构建,然后从资源管理器而不是 Visual Studio 启动生成的文件。您还可以在项目设置中停用调试器附件。

查看运行时间是否有所不同。

【讨论】:

    猜你喜欢
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多