提高应用性能

3

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

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

这是一个简单的操作,将输入/输出文件路径传递给Interop dll…然后dll将从输入文件中执行文本。

为了提高性能,我尝试了以下方法:

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

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

只尝试了一件事情...当我创建一个样本exe来处理16个文件作为输入和输出,并在文本框中给出参考路径时。

..我打开了2个exe实例进行处理。 1个exe有不同的16个输入文件和输出文件路径与输入文件相关 2个exe有不同的16个输入文件和输出文件路径与输入文件相关

当我点击两个exe的开始按钮时,它使用了100%的CPU并显着利用了两个内核,而且在16秒内完成了32个文件的处理。

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


1
你有尝试详细分析应用程序的性能吗?如果I/O是主要的速度慢的原因,那么并行处理无法解决这个问题。 - kennytm
2个回答

1

优化应用程序的方法是对其进行分析,找出它花费时间的地方。然后您可以计划优化瓶颈。不知道哪里是慢的部分就试图进行优化并不是最好的时间利用方式,因为您是在盲目地尝试,希望某些东西有效。找出问题所在并直接解决它们。

有几个问题推荐使用分析器。请查看this questionthis question


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接