This repository was archived by the owner on Feb 23, 2026. It is now read-only.
Description Processing dotnet/runtime#106843 (comment) command:
Command
-intel -arm64
using BenchmarkDotNet . Attributes ;
using System . Runtime . CompilerServices ;
namespace VirtualDispatchChecks
{
class _1
{
public virtual string Method ( ) => "A" ;
}
class _2 : _1
{
public override string Method ( ) => "B" ;
}
class _3 : _1
{
public override string Method ( ) => "C" ;
}
class _4 : _1
{
public override string Method ( ) => "D" ;
}
class _5 : _1
{
public override string Method ( ) => "E" ;
}
class _6 : _1
{
public override string Method ( ) => "F" ;
}
class _7 : _1
{
public override string Method ( ) => "F" ;
}
class _8 : _1
{
public override string Method ( ) => "F" ;
}
class _9 : _1
{
public override string Method ( ) => "F" ;
}
class _10 : _1
{
public override string Method ( ) => "F" ;
}
public class ResolveVirtualRepeatedly
{
static _1 _1 = new _1 ( ) ;
static _1 _2 = new _2 ( ) ;
static _1 _3 = new _3 ( ) ;
static _1 _4 = new _4 ( ) ;
static _1 _5 = new _5 ( ) ;
static _1 _6 = new _6 ( ) ;
static _1 _7 = new _7 ( ) ;
static _1 _8 = new _8 ( ) ;
static _1 _9 = new _9 ( ) ;
static _1 _10 = new _10 ( ) ;
[ MethodImpl ( MethodImplOptions . NoInlining ) ]
static _1 GetA ( int index )
{
switch ( index % 10 )
{
case 0 :
return _10 ;
case 1 : return _1 ;
case 2 : return _2 ;
case 3 : return _3 ;
case 4 : return _4 ;
case 5 : return _5 ;
case 6 : return _6 ;
case 7 : return _7 ;
case 8 : return _8 ;
case 9 : return _9 ;
}
return null ! ;
}
[ MethodImpl ( MethodImplOptions . NoInlining ) ]
static Func < string > GetAction ( int index )
{
return GetA ( index ) . Method ;
}
[ Benchmark ]
public void Get1Virtual ( )
{
GetAction ( 0 ) ;
}
[ Benchmark ]
public void Get10Virtual ( )
{
GetAction ( 0 ) ;
GetAction ( 1 ) ;
GetAction ( 2 ) ;
GetAction ( 3 ) ;
GetAction ( 4 ) ;
GetAction ( 5 ) ;
GetAction ( 6 ) ;
GetAction ( 7 ) ;
GetAction ( 8 ) ;
GetAction ( 9 ) ;
}
}
}
(EgorBot will reply in this issue )
Reactions are currently unavailable
Processing dotnet/runtime#106843 (comment) command:
Command
-intel -arm64
(EgorBot will reply in this issue)