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

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

  • 相关阅读:
    中文转码问题总结
    Linux命令总结
    Maven实战系列文章目录
    JXL API总结
    docker 中安装mysql8之后无法远程连接的问题caching-sha2-password
    springboot查数据并以csv格式现在到本地
    aop
    java.lang.ClassNotFoundException: org.aspectj.lang.JoinPoint
    shiro框架中获取username、ip等信息
    cron
  • 原文地址:https://www.cnblogs.com/xiaoni/p/2886522.html
Copyright © 2011-2022 走看看