单线程扫描电脑所有文件与并行计算扫描电脑所有文件所用时间?

我电脑cpu Core I7   ram:8G

并行代码:690s

public void SetValue(string value)
{
Console.WriteLine(value + "------" + System.Threading.Thread.CurrentThread.Name);
}
public void AddDriveInfos(string path)
{
DirectoryInfo mydir = new DirectoryInfo(path);
if (mydir.Exists)
{
try
{
var fileInfo = mydir.GetFiles();
var listdir = mydir.GetDirectories();
//foreach (var f in fileInfo)
//{
// SetValue("正在扫描" + f.FullName);
//}
//foreach (var l in listdir)
//{
// AddDriveInfos(l.FullName);
//}
Parallel.ForEach(fileInfo, (f) =>
{
SetValue("正在扫描" + f.FullName);
});
Parallel.ForEach(listdir,
(l) =>
{
AddDriveInfos(l.FullName);
}
);

}
catch (Exception e)
{
SetValue(e.Message);
}
}
}
//开始调用 
public void Mangage()
{
var drivesInfo = DriveInfo.GetDrives();
// Parallel.ForEach(drivesInfo, (v) => { AddDriveInfos(v.Name); });
foreach (var v in drivesInfo)
{
AddDriveInfos(v.Name);
}
}

用时:

单线程扫描代码段:

public void SetValue(string value)
{
Console.WriteLine(value + "------" + System.Threading.Thread.CurrentThread.Name);
}
public void AddDriveInfos(string path)
{
DirectoryInfo mydir = new DirectoryInfo(path);
if (mydir.Exists)
{
try
{
var fileInfo = mydir.GetFiles();
var listdir = mydir.GetDirectories();
foreach (var f in fileInfo)
{
SetValue("正在扫描" + f.FullName);
}
foreach (var l in listdir)
{
AddDriveInfos(l.FullName);
}
//Parallel.ForEach(fileInfo, (f) =>
//{
// SetValue("正在扫描" + f.FullName);
//});
//Parallel.ForEach(listdir,
// (l) =>
// {
// AddDriveInfos(l.FullName);
// }
//);

}
catch (Exception e)
{
SetValue(e.Message);
}
}
}

public void Mangage()
{
var drivesInfo = DriveInfo.GetDrives();
// Parallel.ForEach(drivesInfo, (v) => { AddDriveInfos(v.Name); });
foreach (var v in drivesInfo)
{
AddDriveInfos(v.Name);
}
}

用时:174s

可能程序只是扫描,没有对文件操作,最终没有看到并行的效果。

原文地址:https://www.cnblogs.com/xiaoni/p/2886522.html