单线程扫描电脑所有文件与并行计算扫描电脑所有文件所用时间?
2013-01-31 10:31
218 查看
我电脑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
可能程序只是扫描,没有对文件操作,最终没有看到并行的效果。
并行代码: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
可能程序只是扫描,没有对文件操作,最终没有看到并行的效果。
相关文章推荐
- 并行计算缩短大数据量BIRT报表的计算时间
- 用码流和时间计算流媒体文件大小
- 计算所用时间和频率
- Linus:并行计算基本上就是浪费大家的时间
- ac命令根据/var/log/wtmp文件登录退出时间计算用户连接时间
- linux下计算目录中所有文件的行数
- PHP生成随机密码,并计算所用时间
- MP3格式分析(五)---计算CBR和VBR的MP3文件的播放时间的步骤
- [VBA]计算宏运行所用时间
- Linux之父Linus说:并行计算基本上就是浪费大家的时间
- python-----读取Pickle文件信息计算出与当前的时间间隔
- 清除电脑里所有垃圾系统文件
- [VBScript] allfiles.vbs: 显示子目录下的所有文件的修改时间、大小、全限定名等信息
- C++ 扫描文件夹下所有文件
- 写了一个简单的第三方库,功能包括包括转化时间,计算动态行高,获取缓存文件在沙盒的路径
- 计算文件下载时间
- linux 遍历相同文件名,并计算所有文件大小之和
- linux扫描目录下所有文件
- C/C++日期时间使用方法,struct tm, time_t, clock_t,计算循环所用时间
- MPI并行计算环境建立之二--挂载nfs文件系统