时间:2019-05-17 标签:c#Process.Modules非常慢

Eli*_*Eli 5 c# performance module process

我的代码从每个正在运行的进程中提取加载模块的所有名称,我的方法就像这个答案

这是我的代码:

Process[] procs = Process.GetProcesses();            
foreach (Process p in procs)
{                  
    foreach (ProcessModule item in p.Modules)
    {
        Console.WriteLine(item.FileName);
    }
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,这种方法的性能非常低:(

是否有另一种方法或不同的方法来获取所有这些模块的名称?

任何其他运行速度比这更快的解决方案都很棒

TIA

Phi*_*tle 3

您可以尝试添加一些并行化来加快速度:

 Parallel.ForEach(Process.GetProcesses(),
            process =>
            {
                foreach (ProcessModule m in process.Modules)
                {
                    Console.WriteLine(m.FileName);
                }
            });
Run Code Online (Sandbox Code Playgroud)

  • @Eli你确定这没有影响吗?我尝试了一下,[这是我的结果](http://i.imgur.com/Fu65m8b.png) (2认同)
  • @Eli - 你使用的是具有多个 cpu 核心的机器吗? (2认同)