【发布时间】:2014-10-16 10:07:41
【问题描述】:
我在 Visual Studio 12 中开发了一个 C# windows 应用程序。当我运行这个应用程序时,它会减慢所有其他应用程序的速度,并使 PC 变慢。我认为它占用了太多的物理内存。请建议一些解决方法以避免降低我的电脑速度。 以下是所开发应用程序的介绍: 该应用程序是数据密集型的。该应用程序包含一个循环大约 80000 次的 for 循环,并且这个“for 循环”还有一个循环 100000 次的“内部 for 循环”。我将所有数据存储在列表、数组和对象中(我认为这些数据结构会消耗内存) 前任。
for(i = 0; i < 80000; i++)
{
for(j = 0; j < 10000; j++)
{
//do some scientific calculations using mathematical formulas (sine, cos
//calls some user defined functions
}
}
还建议如何使这个应用程序快速!!!
【问题讨论】:
-
完成 800000000 次迭代后,您将如何处理数据?
-
广义上你可以 1) 在内存中保留更少的数据?从磁盘流式传输,处理一点,保存结果 2)将输入数据分成更小的批次并分别运行? 3)购买更多内存?它非常便宜(与开发人员时间相比)。但这可能只是一个短期的解决办法。我认为您真的在问是否可以使用开销较小的数据结构来节省内存,但即使可以,我认为最好也解决规模问题。
-
如果你的PC有强大的显卡,试试GPU计算。 GPU 比 CPU 强大得多,GPU 可以比 CPU 执行更多的并行执行。
-
@Rup 感谢您的宝贵建议,我会遵循您的第一个建议。
-
@Darren Young,实际上我将数据导出到 csv 文件(每个“外部循环”一行,即 80000 行)