.Net6与Framework不同方式获取文件哈希值的性能对比

  • 算法:MD5、SHA1、SHA256、SHA384、SHA512
  • 文件数:200
  • 平台对比:.NET 6 vs .NET Framework 4.7.2

关键代码

csharp 复制代码
// 读取文件夹,获取MD5值
var hashs = new HashAlgorithm[] { MD5.Create(), SHA1.Create(), SHA256.Create(), SHA384.Create(), SHA512.Create() };
var files = dir.GetFiles("*", SearchOption.AllDirectories).OrderBy(f => f.Name).Take(200);
foreach (var hash in hashs)
{
    var map = new Dictionary<string, List<FileInfo>>();
    sw.Restart();
    foreach (var file in files)
    {
        using (var fs = file.OpenRead())
        {
            var md5 = BitConverter.ToString(hash.ComputeHash(fs));
            if (!map.ContainsKey(md5))
                map.Add(md5, new List<FileInfo>());

            map[md5].Add(file);
        }
    }
    sw.Stop();
    var hash_name = hash.GetType().BaseType.Name;
    Console.WriteLine($"{hash_name}:{map.Count},耗时:{sw.Elapsed.TotalMilliseconds}");
}

运行结果

结论

  • .NET 6 的性能确实远比.NET Framework要高;
  • SHA1性能最高,MD5次之,另外几种算法性能远低前两者;
相关推荐
公子小六2 小时前
基于.NET的Windows窗体编程之WinForms滑块与上下控件
windows·microsoft·c#·.net·winforms
FfHUCisI2 小时前
Golang Map 哈希表实现
golang·哈希算法·散列表
Lost of 程序猿10 小时前
.NET 线程安全集合与并发数据结构深度实战:从 lock 到无锁
数据结构·安全·.net
玖玥拾12 小时前
LeetCode 290 单词规律
算法·leetcode·哈希算法·散列表
rockey6271 天前
AScript之编译递归函数
c#·.net·script·动态脚本
j7~1 天前
【C++】《unordered系列关联式容器以及哈希底层、哈希冲突、闭散列与开散列完整解析》
c++·哈希算法·开散列·闭散列·unordered_map·unordered_set·哈希底层结构
陈珙1 天前
.NET AI 实战:用 MCP 把 Claude Code 变成数据库 DBA
架构·.net·技术
影视飓风TIM1 天前
C++哈希表:unordered_set / unordered_map底层原理
c++·算法·哈希算法·散列表
geovindu1 天前
CSharp: Template Method Pattern
开发语言·后端·c#·.net·模板方法模式·行为模式
步步为营DotNet1 天前
【MVP深度】.NET MAF:从单 Agent 到可恢复的多 Agent 工作流
.net