【问题标题】:Improve Application Performance提高应用程序性能
【发布时间】:2010-03-22 08:44:32
【问题描述】:

想要提高 C#.Net 应用程序的性能..

在我的应用程序中,我使用第三方互操作/Dll 来处理 .doc 文件。

这是一个简单的操作, 哪个将输入/输出文件路径传递给 Interop dll ...& dll 将执行文本表单输入文件。

为了提高我尝试过的性能,

  1. 执行2个therad处理32个文件。(每个Thread处理16个文件)
  2. 通过新建2个AppDomain来执行应用代码(每个AppDomain Code处理16个文件)
  3. 使用 TPL(任务并行库)执行代码

但所有选项都需要大约相同的时间(32 秒)来处理 32 个文件。手动处理同样需要 32 秒来处理 32 个文件。

刚刚尝试了一件事......当我创建示例 exe 来处理 16 个文件作为输入和输出以供 TextBox 中给出的参考路径时。

..我打开 2 个 exe 实例进行处理。 1 exe 具有不同的 16 个输入文件和输出使用输入文件路径创建 2 exe 有不同的 16 个输入文件和输出使用输入文件路径创建

当我点击两个 exe 的开始按钮时 ..它使用 100% cpu 并显着利用两个核心并在 16 秒内完成 32 个文件的进程。

我们能否提供这种明确的实践来提高我的应用程序性能?

【问题讨论】:

  • 您是否尝试过详细分析应用程序?如果 I/O 是缓慢的主要来源,那么您无法通过并行来解决它。

标签: c# performance optimization


【解决方案1】:

要走的路是分析您的应用程序并查看它在哪里花费时间。然后,您可以计划优化瓶颈。在不知道慢的部分在哪里的情况下尝试优化并不是对时间的最佳利用,因为你在黑暗中刺痛,希望某些东西能奏效。找出问题所在并直接解决。

有几个问题可以推荐分析器。查看this questionthis question

【讨论】:

    【解决方案2】:

    问题可能是您的第三方工具以某种方式在线程之间同步。如果它使用单线程(“STA”)COM 组件来完成工作,这可能会隐式发生。您可以通过在调试器中运行时中断应用程序并查看工作线程和 UI 线程的调用堆栈来验证这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      相关资源
      最近更新 更多