Необходимая преамбула:
- Как и большинство микрооптимизаций, ответ, вероятно, "кого это волнует?" Вряд ли это будет причиной замедления вашей программы.
- Это простая вещь, чтобы сделать быстрый эмпирический тест. Однако, как и все эмпирические тесты, вы должны скептически относиться к своим результатам. Ответ может зависеть от множества ненаблюдаемых или ненаблюдаемых ошибок.
Хенк Холтерман прав, что ИЛ будет казаться более эффективным в первой форме. Конструктор, который принимает строку, должен выполнить некоторый анализ. Разбор не медленный, но и не бесплатный. Можно было бы легко улучшить производительность, используя конструктор Guid, который принимает строковые типы int вместо строки.
Кроме того, Guid является типом значения. Это означает, что несмотря ни на что, вам придется заплатить стоимость копирования памяти, когда вы вернете Guid (да, я знаю, это действительно крутая плата за копирование 16 байт).
Наконец, и здесь я получаю немного предположения, вполне возможно, что JITer может распознавать конструкторы, не имеющие побочных эффектов, и развертывать их во время JIT в «простые старые данные». Если это так, то общая стоимость может составить всего 16 байтов memcpy, что в любом случае неизбежно.
Итак ... запишите это в обе стороны, протестируйте в обоих случаях в различных условиях. Вы, вероятно, обнаружите, что это вообще не имеет значения, но вы также можете найти небольшое повышение производительности.