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

我们已经得出结论,无法避免应用程序的瓶颈,并且在进行扩展时,将工作分散到多个线程上,由于访问RAM的线程很多,我们似乎会遇到“冲突”。

实际的问题指的是锁定项目,并有许多线程试图访问这些项目。无法进一步优化线程锁定。因为这与线程有关,所以我不确定是否也应该研究其他CPU选择并仔细查看QPI统计信息?我们目前正在使用Westmere架构,但时钟速度为2GHz。

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

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

提前致谢,

最佳答案

我会在更快的计算机上测试该应用程序。从它的声音来看,您的内存带宽是瓶颈,因此我将尝试在时钟i7上使用32 GHz 1600 MHz或类似频率的4.5 GHz。您可以花1000美元左右购买一个。您可能会发现,使用更快的系统,您的瓶颈就会移动。

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

关于c# - 堆分配和合适的硬件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10085836/

10-09 08:11