using System.Diagnostics;
using System.Collections.Generic;
public readonly struct ProtocolVersion
public ProtocolVersion(byte major, byte minor)
public readonly byte Major;
public readonly byte Minor;
public static void ParseVersion(ProtocolVersion version) {}
public static void ParseVersion(in ProtocolVersion version) {}
public static int Main(string[] args)
var version = new ProtocolVersion(1, 1);
const int Iterations = 100000000;
Stopwatch sw = new Stopwatch();
for(int i = 0; i < Iterations; ++i)
ParseVersion(in version);
Console.WriteLine("pass with in modifier={0}",sw.ElapsedMilliseconds);
for(int i = 0; i < Iterations; ++i)
Console.WriteLine("pass by value={0}",sw.ElapsedMilliseconds);