diff --git a/src/Benchmarks/Benchmarks.manifest b/src/Benchmarks/Benchmarks.manifest index 87c10d674..2d621768d 100644 --- a/src/Benchmarks/Benchmarks.manifest +++ b/src/Benchmarks/Benchmarks.manifest @@ -23,6 +23,10 @@ name="BenchmarkComponent.ClassWithFastAbi" threadingModel="both" xmlns="urn:schemas-microsoft-com:winrt.v1" /> + diff --git a/src/Benchmarks/QueryInterface.cs b/src/Benchmarks/QueryInterface.cs index ced88122c..b287b675f 100644 --- a/src/Benchmarks/QueryInterface.cs +++ b/src/Benchmarks/QueryInterface.cs @@ -28,6 +28,7 @@ public class QueryInterfacePerf ManagedObjectWithInterfaces managedObject; ManagedComposableObjectWithInterfaces composableObject; ClassWithFastAbi fastAbiInstance; + ClassWithFastAbiDerived fastAbiDerivedInstance; [GlobalSetup] public void Setup() @@ -37,6 +38,7 @@ public void Setup() managedObject = new ManagedObjectWithInterfaces(); composableObject = new ManagedComposableObjectWithInterfaces(); fastAbiInstance = new ClassWithFastAbi(); + fastAbiDerivedInstance = new ClassWithFastAbiDerived(); } [Benchmark] @@ -63,6 +65,30 @@ public int QueryFastAbiNonDefaultInterface() return fastAbiInstance.NonDefaultIntProperty; } + [Benchmark] + public int QueryFastAbiDerivedDefaultInterface() + { + return fastAbiDerivedInstance.DerivedDefaultIntProperty; + } + + [Benchmark] + public int QueryFastAbiComposedNonDefaultInterface() + { + return fastAbiDerivedInstance.DerivedNonDefaultIntProperty; + } + + [Benchmark] + public int QueryFastAbiComposedBaseDefaultInterface() + { + return fastAbiDerivedInstance.DefaultIntProperty; + } + + [Benchmark] + public int QueryFastAbiComposedBaseNonDefaultInterface() + { + return fastAbiDerivedInstance.NonDefaultIntProperty; + } + [Benchmark] public bool QueryNonDefaultInterface2() { @@ -144,6 +170,34 @@ public int ConstructAndQueryFastAbiNonDefaultInterfaceFirstCall() return instance2.NonDefaultIntProperty; } + [Benchmark] + public int ConstructAndQueryFastAbiDerivedDefaultInterfaceFirstCall() + { + var instance2 = new ClassWithFastAbiDerived(); + return instance2.DerivedDefaultIntProperty; + } + + [Benchmark] + public int ConstructAndQueryFastAbiDerivedNonDefaultInterfaceFirstCall() + { + var instance2 = new ClassWithFastAbiDerived(); + return instance2.DerivedNonDefaultIntProperty; + } + + [Benchmark] + public int ConstructAndQueryFastAbiDerivedBaseDefaultInterfaceFirstCall() + { + var instance2 = new ClassWithFastAbiDerived(); + return instance2.DefaultIntProperty; + } + + [Benchmark] + public int ConstructAndQueryFastAbiDerivedBaseNonDefaultInterfaceFirstCall() + { + var instance2 = new ClassWithFastAbiDerived(); + return instance2.NonDefaultIntProperty; + } + [Benchmark] public int StaticPropertyCall() { diff --git a/src/get_testwinrt.cmd b/src/get_testwinrt.cmd index 1e3196fe1..b68510ebe 100644 --- a/src/get_testwinrt.cmd +++ b/src/get_testwinrt.cmd @@ -14,7 +14,7 @@ git checkout -f master if ErrorLevel 1 popd & exit /b !ErrorLevel! git fetch -f if ErrorLevel 1 popd & exit /b !ErrorLevel! -git reset -q --hard 6573bf54bd4e4349272b5e30a0f526c4dfe1f535 +git reset -q --hard 761842f968d4f9b661653cce9e26534be11174fb if ErrorLevel 1 popd & exit /b !ErrorLevel! echo Restoring Nuget %this_dir%.nuget\nuget.exe restore