zoukankan      html  css  js  c++  java
  • 单线程扫描电脑所有文件与并行计算扫描电脑所有文件所用时间?

    我电脑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

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

  • 相关阅读:
    python数据1-5
    python密码1-2
    css Loading 教程
    定制化jQuery
    PHP 将MySQL数据导出csv
    windows MySQL 5.7 导出表方法记录
    前端UI
    我的框架说明文档 2016-04-06
    微信公众号内支付(三)
    微信公众号内支付(二)
  • 原文地址:https://www.cnblogs.com/xiaoni/p/2886522.html
Copyright © 2011-2022 走看看