Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#进程。模块非常慢_C#_Performance_Process_Module - Fatal编程技术网

c#进程。模块非常慢

c#进程。模块非常慢,c#,performance,process,module,C#,Performance,Process,Module,我的代码从每个正在运行的进程中提取所有已加载模块的名称,我的方法如下 这是我的密码: Process[] procs = Process.GetProcesses(); foreach (Process p in procs) { foreach (ProcessModule item in p.Modules) { Console.WriteLine(item.FileName); } } 由

我的代码从每个正在运行的进程中提取所有已加载模块的名称,我的方法如下

这是我的密码:

Process[] procs = Process.GetProcesses();            
foreach (Process p in procs)
{                  
    foreach (ProcessModule item in p.Modules)
    {
        Console.WriteLine(item.FileName);
    }
}
由于某些原因,这种方法的性能非常低:(

是否有其他方法或不同的方法来获取所有这些模块的名称

任何其他运行速度比这更快的解决方案都非常好


TIA

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

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

“非常低的性能”有多低?在我的系统上,此代码是可以接受的fast@PhilipPittle39个进程中仅2097个模块的731毫秒是
tasklist/M
快多了?@rene实现了什么?@Eli你确定这没有什么区别吗?我试过了,@Eli-你在一台有多个cpu核的机器上吗?@测量正确否w它看起来一点也不稳定。我会像你一样尝试平均50个…@PhilipPittle No.好的commant-似乎是并行不能提高性能的原因。无论如何,我正在开发一个虚拟机箱,我会用更多的内核测试它-但是,它仍然非常慢mechanism@Eli-是的,收集生产任务单的过程相当缓慢来自所有进程的DULE。除了向操作系统请求之外,没有其他方法可以获取此信息。操作系统不会“缓存”此信息,因此它必须从每个正在运行的进程中获取此信息。操作系统站点缓存此信息没有多大好处,因此不保证内存开销。这就是原因,正如
ren所说e
指出,即使是任务列表/M也相对较慢。