【问题标题】:Win application slows down other apps and PCWin 应用程序会降低其他应用程序和 PC 的速度
【发布时间】: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 行)

标签: c# .net winforms


【解决方案1】:

您是否使用 Windows 的资源监视器来监视内存使用情况(以及“备用”内存消耗 => 磁盘缓存)?如果您的 C# 应用程序的优先级正常,那么您的机器似乎严重依赖该缓存,因此如果可用内存太少并且“备用”区域缩小,几乎所有内容都会变慢.

您应该使用更细粒度的性能计数器来发现瓶颈。

【讨论】:

    猜你喜欢
    • 2012-10-24
    • 2023-04-05
    • 1970-01-01
    • 2012-09-09
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多