aldoggr
8/29/2018 - 6:55 PM

Crear un "CombGuid" (Guid Secuencial basado en timestamp - evita fragmentación)

Crear un "CombGuid" (Guid Secuencial basado en timestamp - evita fragmentación)

public static class CombGuid
{
  public static Guid NewGuid()
  {
    DateTime timestamp = DateTime.UtcNow;
    byte[] guidArray = Guid.NewGuid().ToByteArray();
    byte[] timestampArray = BitConverter.GetBytes(timestamp.Ticks/10000L);
    if(BitConverter.IsLittleEndian)
      Array.Reverse(timestampArray);
    Buffer.BlockCopy(timestampArray, 2, guidArray, 10, 6);
    return new Guid(guidArray);
  }
}

void Test()
{
  Guid guid;
  for(int i = 0; i < 100; i++)
  {
    guid = CombGuid.NewGuid();
    guid.Dump();
  }
}