全部,
我有一个服务器应用程序,它从队列中读取消息并通过调用存储过程将它们写入数据库中。它是用 C# 编写的,面向 .NET Framework 3.5 服务器是XEON 2.4Ghz(16核)
在我的构建属性中,我将平台目标设置为“任何 CPU”。结果是在服务器中,所有核心都以 100% 稳定运行,但应用程序运行缓慢! 我将平台目标更改为 x86,在服务器上运行时运行速度比以前快得多,并且核心负载约为 20-30%。
我无法真正解释发生了什么。
有什么想法吗?
谢谢,
MK
嗯,没有多大意义。但您正在使用一个非常不同的数据库提供商。它们的 64 位版本相对较新,可能没有经过与 32 位版本相同的严格测试和优化。
不过,像这样的程序应该始终阻塞队列读取和数据库写入。 I/O 总是很慢,比原始代码慢得多。只有当线程因 I/O 请求而阻塞时,它才会使用少于 100% 的 CPU 周期。
确保它不会频繁抛出和捕获异常。这是昂贵的并且很容易耗尽所有 CPU 资源。在输出窗口中调试时可见。
MS 人 Rick Byers 的这篇博文谈到了这一点:任何 CPU Exes 通常带来的麻烦都超过了它们的价值
博客中的一句话是:无论如何,32 位往往更快,这可能是答案的一部分。
编辑:添加了一些我忘记的答案,正如汉斯·帕桑特指出的那样。