对于不可避免地在堆上创建大量数据的 C# .net 3.5 应用程序,就硬件而言,我会在内存方面寻找什么?它只是最大的套接字总线宽度吗?还是记忆棒的“带宽”?或者他们运行的实际频率?
我们已经得出结论,我们的应用程序的瓶颈是无法避免的,当扩大规模时,将工作分散到多个线程上,由于许多线程访问 RAM,我们似乎遇到了“冲突”。
实际问题是指锁定项目并且有许多线程试图访问这些项目。没有办法进一步优化线程锁定。由于这与线程有关,我不确定是否还应该调查替代 CPU 选择并仔细查看 QPI 统计信息?我们目前使用的是 Westmere 架构,但时钟速度较慢,为 2GHz。
编辑:有人建议 DMA 可以帮助我们。
我将把它标记为 C# 和 Java,因为我相信答案不会是特定于 C# 的。
提前致谢,