1

对于不可避免地在堆上创建大量数据的 C# .net 3.5 应用程序,就硬件而言,我会在内存方面寻找什么?它只是最大的套接字总线宽度吗?还是记忆棒的“带宽”?或者他们运行的实际频率?

我们已经得出结论,我们的应用程序的瓶颈是无法避免的,当扩大规模时,将工作分散到多个线程上,由于许多线程访问 RAM,我们似乎遇到了“冲突”。

实际问题是指锁定项目并且有许多线程试图访问这些项目。没有办法进一步优化线程锁定。由于这与线程有关,我不确定是否还应该调查替代 CPU 选择并仔细查看 QPI 统计信息?我们目前使用的是 Westmere 架构,但时钟速度较慢,为 2GHz。

编辑:有人建议 DMA 可以帮助我们。

我将把它标记为 C# 和 Java,因为我相信答案不会是特定于 C# 的。

提前致谢,

4

1 回答 1

1

我会在更快的机器上测试应用程序。从它的声音来看,你的内存带宽是瓶颈,所以我会尝试一个 4.5 GHz 的超频 i7 和 32 GB 的 1600 MHz 内存或类似的。你可以花大约 1000 美元买一个。您可能会发现,使用更快的系统,您的瓶颈会移动。

顺便说一句:我怀疑在 C# 中创建对象是可以避免的,尽管它可能无法实现,因为听起来修复这个问题的时间有限。在Java中,我写了一些高性能服务器,每天GCes不到一次,但是你必须客观地编写所有核心代码。同样,您可以编写一个不锁定代码的关键部分的服务,但稍后添加它并不是一件容易的事。

于 2012-04-10T09:49:19.573 回答