是否有任何理由更喜欢在 IDE 中运行应用程序而不是运行独立的可执行文件?

Posted

技术标签:

【中文标题】是否有任何理由更喜欢在 IDE 中运行应用程序而不是运行独立的可执行文件?【英文标题】:Is there any reason to prefer running an application from within IDE vs running stand alone executable? 【发布时间】:2018-01-26 17:20:11 【问题描述】:

我使用 C++ 整数编程例程为困难的NP-Hard 问题开发更快的专用方法。我遇到了一个较早的问题,该问题更多地涉及从 IDE (Visual Studio) 中启动应用程序时获得不同的结果,而不是在根本不打开 IDE 的情况下从命令行运行构建的应用程序。

Differences between running an executable with Visual Studio debugger vs without debugger

这个问题不是关于不同的结果,而是关于每个选项(从 IDE 中运行还是独立运行可执行文件)是否对计算时间和性能有任何影响。在我的工作中,重要的是要表明,与直接使用通用的现成求解器(例如 CPLEX)求解整数程序相比,我们开发的任何专用算法在计算时间方面都做得更好。测试这两个选项(我们的专用算法与 CPLEX 直接对比)需要使用嵌入在 C++ 文件中的 CPLEX 例程和库生成线性/整数编程模型。

然后,从 Visual Studio (F7) 中构建每个设置并运行 (F5)。请注意,F7 本身会生成可执行文件。

为了给每个方法(我们的专用算法或直接 CPLEX)以尽可能快的计算时间运行的最佳机会,是否建议通过在 IDE(在本例中为 Visual Studio)中按 F5 来启动应用程序,或者最好在不打开 IDE 的情况下将应用程序(由 bu​​ild F7 生成)作为 .exe 运行?假设对于两个选项(IDE 与独立 .exe),需要从同一文件夹访问工作目录和中间文件。

换句话说,IDE 启动与直接运行 .exe 是否存在显着差异,从而影响应用程序的计算时间?

【问题讨论】:

IDE 会将您的程序作为“独立可执行文件”运行。它应该像 shell/命令行或“资源管理器”界面那样创建进程。 如果你启动它没有调试器它没有任何区别,它与从命令行运行它完全相同。 至于你的问题,你确定你是运行你的程序,而不是debug吗?因为在调试器中运行可能会在初始化其他未初始化的变量时导致不同的行为。在使用变量之前,您应该检查是否正确初始化变量。 注意:F5使用调试器运行,Ctrl+F5不使用调试器运行。 F5 使用调试器运行,Ctrl+F5 不使用调试器运行。这与“发布”/“调试”版本无关。即使你用F5运行“Release”版本,它也会在调试器下运行。 【参考方案1】:

在 Visual Studio 中,您的程序作为独立进程运行。在开始之前,您可以选择 Debug 或 Release 版本来运行。 Release 版本已启用优化。

在 IDE 中运行时,VS 正在监视您的应用程序,因此可能会有某种开销。您需要在您的特定机器上进行测量以了解具体数量。

使用 ctrl-f5,您可以在 IDE 之外运行您的应用程序。

【讨论】:

以上是关于是否有任何理由更喜欢在 IDE 中运行应用程序而不是运行独立的可执行文件?的主要内容,如果未能解决你的问题,请参考以下文章

对于更新不依赖于先前值的不可变集合,是不是有任何理由更喜欢 Interlocked 而不是 volatile?

有啥理由比 UTF-8 更喜欢 UTF-16?

是否有任何理由使用 C 而不是 C++ 进行嵌入式开发? [关闭]

是否有任何理由将图像的通道顺序从 RGB 更改为 BGR?

有没有办法在Visual Studio或MATLAB中“映射”程序执行顺序?

有啥理由更喜欢 System.arraycopy() 而不是 clone()?