提高应用性能

时间:2010-03-22 08:44:33

标签: c# performance optimization

希望提高C#.Net应用程序的性能..

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

这是一个简单的操作, 哪个传递输入/输出FilePath到Interop dll ...& dll将执行文本格式的输入文件。

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

  1. 执行2 therad处理32个文件。(每个Thread进程16个文件)
  2. 通过创建2个新的AppDomain(每个AppDomain代码进程16个文件)
  3. 来执行应用程序代码
  4. 使用TPL执行代码(任务Parellel库)
  5. 但是所有选项都需要大约相同的时间(32秒)来处理32个文件。手动过程花了相同的32秒来处理32个文件。

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

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

    创建

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

    我们能否提供这种明确的并行性来改善我的申请表现?

2 个答案:

答案 0 :(得分:1)

要做的就是分析您的应用程序,看看它花费的时间。然后,您可以计划优化瓶颈。试图在不知道慢速部分的位置进行优化并不是最好地利用你的时间,因为你在黑暗中刺伤,希望有些东西有效。找出问题所在并直接解决这些问题。

有几个问题推荐个人资料。查看this questionthis question

答案 1 :(得分:0)

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