【问题标题】:Why console application is taking more time than forms application in c#为什么控制台应用程序比 C# 中的表单应用程序花费更多时间
【发布时间】:2011-01-24 07:16:33
【问题描述】:

我创建了一个执行一些图像处理的类库(称为 GNGEngine.dll)。这个 dll 包含一个函数 ProcessBitmap() 作为搜索特定模式的主要函数。我通过创建另一个表单应用程序并引用 dll 来测试引擎。我通过单击按钮调用 dll 的 ProcessBitmap() 方法。表单应用程序需要 8 秒来完全处理图像。

现在根据客户的要求,我创建了一个 exe(控制台应用程序)文件 GNGEngineRunner.exe,它以图像文件名作为参数。我已经创建了 dll 类的对象并调用了 ProcessBitmap() 方法并将文件传递给它进行处理。现在处理同一张图像几乎需要一分钟。

有什么具体原因,为什么花费了太多时间?

感谢您分享宝贵的时间。

【问题讨论】:

标签: c# image-processing console-application


【解决方案1】:

首先,您应该附加一个分析器以查看发生了什么。如果您还没有,可以在http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/使用试用版

Visual Studio 内置了一个性能分析器,但根据您的 VS 版本,它可能是不存在的、糟糕的或好的。

其次,应该没有理由这样做。我猜这个问题是因为引用了不存在的表单/GUI对象或类似的东西而引发了异常。 Execution-wise Console 或 WinForm 100% 相同,您甚至可以将它们混合在一个应用程序中。唯一的区别是一些引用以及您创建控制台窗口而不是表单这一事实。

请随意添加更多细节和一些代码。

【讨论】:

    【解决方案2】:

    你没有告诉我们你在做什么或你是如何做的,这几乎不可能真正回答......但你的第一步应该是对正在发生的事情进行一些适当的跟踪。插入适量的日志记录(包括时间戳),然后应该相当清楚时间在您的流程中的哪个位置。在控制台版本和 Windows 窗体版本中运行它。然后专注于瓶颈 - 可能会问另一个 SO 问题更多细节

    【讨论】:

    • 感谢乔恩的快速回复。我只是在编辑我的问题以提供更多详细信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    相关资源
    最近更新 更多