共计 1189 个字符,预计需要 3 分钟阅读。
手写方法生成Guid
在C#的System
类中已经为我们预定义了结构体Guid
用于生成Guid,我们还可以通过手写方法来实现生成Guid
public static string NewGuid()
{
string[] a = { "A", "B", "C", "D", "E", "F", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
StringBuilder stringBuilder = new StringBuilder();
var r = new Random();
Parallel.For(0, 32,
i =>
{
stringBuilder.Append(a[r.Next(0, 15)]);
});
return stringBuilder.ToString();
}
效率比较
系统方法和手写代码各执行10000次,比较效率。未配置正确的文章地址
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GUID
{
class Program
{
public static string NewGuid()
{
string[] a = { "A", "B", "C", "D", "E", "F", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0" };
StringBuilder stringBuilder = new StringBuilder(100);
var r = new Random();
Parallel.For(0, 32,
i =>
{
stringBuilder.Append(a[r.Next(0, 15)]);
});
return stringBuilder.ToString();
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 1; i <= 10000; i++)
{
var guid = Guid.NewGuid();
guid.ToString("N");
}
sw.Stop();
Console.WriteLine("系统方法总共花费{0}ms.", sw.ElapsedMilliseconds);
sw.Reset();
sw.Start();
for (int i = 1; i <= 10000; i++)
{
NewGuid();
}
sw.Stop();
Console.WriteLine("手写方法总共花费{0}ms.", sw.ElapsedMilliseconds);
Console.ReadKey();
}
}
}
最终结果
手写方法完败系统方法总共花费4ms.
手写方法总共花费106ms.
正文完