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


    我电脑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 脚本
    快速排序的几种实现方式
    如何查找某个网站的(如:有道云笔记)的接口
    一键导出「有道云笔记」所有笔记
    2020年启蒙及小学识字练字APP或小程序测评榜
    2020年部编版小学二年级语文上册知识点(完整版)
    2020年部编人教版小学语文一年级下册知识点汇总
    换个角度,程序员爸爸应该关注一下
    计算机基础知识-I/O篇
  • 原文地址:https://www.cnblogs.com/xiaoni/p/2886522.html
Copyright © 2020-2023  润新知