手写方法生成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次,比较效率。
【C#教程】停表-StopWatch
介绍 命名空间: System.Diagnostics Assemblies: System.Runtime.Extensions.dll, System.dll, netstandard.dll 提供一组方法和属性,可用于准确地测量运行时间。 public class Stopwatch 继承 O...
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.
提示
你已经点赞过了