使用应用程序的多个实例的性能改进

时间:2010-10-12 15:27:33

标签: .net performance

我正在使用性能敏感的.net应用程序。

它能够执行最多32个线程的并行线程。我们需要进一步改进它。增加线程可能无法提供帮助,因为随着线程数量的增加,处理失败尝试的次数也会增加。

我的问题是,

  1. 提高绩效的剩余选项有哪些?

  2. 如果我运行同一个应用程序的两个实例,每个运行32个线程的parellel会有什么改进吗?考虑到每个应用程序将在不同的AppDomain中运行,这只是一个疯狂的想法。

1 个答案:

答案 0 :(得分:3)

您最好的选择是严格衡量绩效并在进行任何更改之前确定瓶颈。在问题上抛出额外的线程或进程不太可能产生最佳解决方案。从extensive .Net profiler information开始。

为什么32个线程是一个神奇的数字?这是否比31/30/29等提供更好的吞吐量?

这些线程在不工作时正在做什么?在任何给定时间,没有比系统中处理器核心数更多的线程可以处于活动状态。如果你受CPU限制,那么添加更多线程会适得其反。

涉及多少上下文切换开销?

您的外部瓶颈是什么?直接I / O,网络,数据库?你还没有说过应用程序实际上做了什么。

您的线程是否共享资源?单个共享数据项可能是一个重要瓶颈,再次,在这种情况下添加线程无济于事。如果可能,用线程本地替换共享数据。