Skip to content

Улучшения для MD5 hash #74

Description

@Kataane

Добрый день.
Спасибо большое за подобную библиотеку и Ваш труд. Хотелось бы внести немного помощи.

В Md5HashFunction.cs, HashFunctionBase.cs и в ByteUtility.cs
используется устаревшая логика для создания MD5 hash на основе строки.

Примерно с .NET 5 появились MD5.HashData и Convert.ToHexString

Что позволяет делать примерно так:

public override string Invoke(RenderSettings settings, string argument1) {
  var buffer = Encoding.UTF8.GetBytes(argument1);
  
  Span<byte> hash = stackalloc byte[MD5.HashSizeInBytes];
  MD5.HashData(buffer, hash);
  
  return Convert.ToHexString(hash);
}

На сколько это лучше?

Method Size Mean Error StdDev Rank Gen0 Allocated
Md5WithStackallockAndStatic 10000 392.1 ns 7.55 ns 7.76 ns 1 0.0210 88 B
Md5WithStackallockAndStatic 10 394.0 ns 4.49 ns 3.98 ns 1 0.0210 88 B
Md5WithStackallockAndStatic 50 394.9 ns 5.04 ns 4.21 ns 1 0.0210 88 B
Md5WithStackallockAndStatic 100 395.3 ns 3.47 ns 3.25 ns 1 0.0210 88 B
Md5WithStackallockAndStatic 1000 398.1 ns 6.02 ns 5.03 ns 1 0.0210 88 B
Md5WithUsing 10000 1,140.0 ns 10.83 ns 9.60 ns 2 0.2499 1048 B
Md5WithUsing 50 1,150.3 ns 8.98 ns 7.01 ns 2 0.2499 1048 B
Md5WithUsing 1000 1,152.3 ns 14.84 ns 13.16 ns 2 0.2499 1048 B
Md5WithUsing 100 1,156.4 ns 22.71 ns 24.30 ns 2 0.2499 1048 B
Md5WithUsing 10 1,156.8 ns 8.38 ns 7.84 ns 2 0.2499 1048 B

Если нужна подробная информация, тесты и бенчмарки:
https://github.com/Kataane/MD5Hash

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions