Рассчитайте временную сложность алгоритма!
Посмотрите на следующий код:
public string GetMD5Hash(string input)
{
System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(input);
bs = x.ComputeHash(bs);
System.Text.StringBuilder s = new System.Text.StringBuilder();
foreach (byte b in bs)
{
s.Append(b.ToString("x2").ToLower());
}
string password = s.ToString();
return password;
}
Если бы мы вычислили сложность времени, мы получили бы T = 11 + n * 2, однако это всего лишь «то, что мы видим», т. Е. ToLower может выполнить тяжелую работу, которую мы не знаем. Но с этого момента мы можем видеть, что этот алгоритм является O (n) во всех случаях. Значение времени увеличивается с ростом данных.
Также, чтобы решить проблему с кешем, я бы предпочел, чтобы моя «тяжелая» работа с памятью была менее затратной по сравнению с использованием ЦП.