xxxxxxxxxx
IL_0000: newobj instance void Headers::.ctor()
IL_0005: ret
xxxxxxxxxx
private decimal _amount;
public string FormattedAmount
{
get { return string.Format("{0:C}", _amount); }
}
xxxxxxxxxx
private decimal? _amount;
// For nullable decimals
public string FormattedAmount
{
get
{
return _amount == null ? "null" : string.Format("{0:C}", _amount.Value);
}
}
xxxxxxxxxx
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19042
Intel Core i7-7500U CPU 2.70GHz (Kaby Lake), 1 CPU, 4 logical and 2 physical cores
.NET Core SDK=5.0.104
[Host] : .NET Core 5.0.5 (CoreCLR 5.0.521.16609, CoreFX 5.0.521.16609), X64 RyuJIT
Job-ONVXJR : .NET Core 5.0.5 (CoreCLR 5.0.521.16609, CoreFX 5.0.521.16609), X64 RyuJIT
LaunchCount=50 RunStrategy=ColdStart
xxxxxxxxxx
Type typeToCreate = typeof(Headers);
object headers = Activator.CreateInstance(typeToCreate);
xxxxxxxxxx
Type typeToCreate = typeof(Headers);
ConstructorInfor ctor = typeToCreate.GetConstructor(System.Type.EmptyTypes);
object headers = ctor.Invoke(null);
xxxxxxxxxx
NewExpression constructorExpression = Expression.New(HeadersType);
Expression<Func<object>> lambdaExpression = Expression.Lambda<Func<object>>(constructoeExpression);
Func<object> createHeadersFunc = lambdaExpression.Compile();
object Headers = createHeadersFunc();
xxxxxxxxxx
Type headersType = typeof(Headers);
DynamicMethod createHeadersMethod = new DynamicMethod(
name: $"KafkaDynamicMethodHeaders",
returnType: headersType,
parametertypes: null,
module: typeof(ConstructorBenchmarks).Module,
skipVisibility: false);
xxxxxxxxxx
ConstructorInfor ctor = typeToCreate.GetConstructor(System.Type.EmptyTypes);
ILGenerator il = createHeadersMethod.GetILGenerator();
il.Emit(OpCodes.Newobj, Ctor);
il.Emit(OpCodes.Ret);