2010-03-22 74 views
3

要Improvide C#.NET应用程序的性能..提高应用程序性能

在我的应用我使用第三方的Interop/DLL到进程.doc文件。

这是一个简单的操作, 其中通过输入/输出FilePath Interop DLL ... & DLL将执行文本格式输入文件。

为了提高性能我曾尝试,

  1. 执行2 therad处理32个文件。(每个线程处理16个文件)
  2. 通过创建2个新的应用程序域(每个应用程序域码过程16页的文件执行的应用程序代码)
  3. 执行代码使用TPL(任务中并行库)

但所有选项需要大约同一时间(32秒)来处理32个文件。手动过程花费相同的32秒来处理32个文件。

刚刚试过一件事..当我创建了示例exe来处理16个文件作为输入&输出引用在TextBox中给出的路径。

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

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

我们可以提供这种明确的prallism来提高我的应用程序性能吗?

+1

您是否尝试过详细分析应用程序?如果I/O是缓慢的主要来源,那么你不能通过并行来解决它。 – kennytm 2010-03-22 08:46:53

回答

1

要走的路是分析你的应用程序,看看它花费的时间。然后你可以计划优化瓶颈。试图在不知道缓慢部分在哪里的情况下进行优化并不是在黑暗中刺伤你的时间的最佳方式,希望能够有所作为。找出问题所在,并直接解决问题。

有几个问题推荐配置文件。检查出this questionthis question

0

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