The top section is the stack from xUnit, and the bottom is MbUnit. I'm
wondering if you notice something significantly different in the
MbUnit stack that would explain why you're getting better performance?
> UnitTest.DLL!UnitTest.TestCase.Debug_Performance_Test() Line 13 C#
[Native to Managed Transition]
[Managed to Native Transition]
xunit.dll!Xunit.Sdk.TestCommand.Execute(object testClass =
{UnitTest.TestCase}) + 0x4d bytes
xunit.dll!Xunit.Sdk.FixtureCommand.Execute(object testClass =
{UnitTest.TestCase}) + 0x155 bytes
xunit.dll!Xunit.Sdk.BeforeAfterCommand.Execute(object testClass =
{UnitTest.TestCase}) + 0x14c bytes
xunit.dll!Xunit.Sdk.LifetimeCommand.Execute(object testClass =
{UnitTest.TestCase}) + 0x73 bytes
xunit.dll!Xunit.Sdk.ExceptionWrapperCommand.Execute.AnonymousMethod
() + 0x34 bytes
xunit.dll!Xunit.Sdk.ExceptionWrapperCommand.RunAndCatch
(Xunit.Sdk.ExceptionWrapperCommand.ExecutionDelegate delegate =
{Method = {Xunit.Sdk.MethodResult <Execute>b__0()}}) + 0x45 bytes
xunit.dll!Xunit.Sdk.ExceptionWrapperCommand.Execute(object testClass
= null) + 0x81 bytes
xunit.dll!Xunit.Sdk.TimedCommand.Execute(object testClass = null) +
0x62 bytes
xunit.dll!Xunit.Sdk.TraceAssertCommand.Execute(object testClass =
null) + 0x174 bytes
Gallio.XunitAdapter.dll!
Gallio.XunitAdapter.Model.XunitTestController.RunTestCommandAndFinishStep
(Gallio.Model.Execution.ITestContext testContext =
{Gallio.Model.Execution.ObservableTestContext},
Xunit.Sdk.ITestClassCommand testClassCommand =
{Xunit.Sdk.TestClassCommand}, Xunit.Sdk.ITestCommand testCommand =
{Xunit.Sdk.TraceAssertCommand}) + 0x70 bytes
Gallio.XunitAdapter.dll!
Gallio.XunitAdapter.Model.XunitTestController.RunTestCommands
(Gallio.Model.Execution.ITestCommand testCommand =
{Debug_Performance_Test}, Xunit.Sdk.ITestClassCommand testClassCommand
= {Xunit.Sdk.TestClassCommand},
System.Collections.Generic.IEnumerable<Xunit.Sdk.ITestCommand>
xunitTestCommands = Count = 1, Gallio.Model.ITestStep parentTestStep =
{[Step] TestCase}, bool isPrimary = true) + 0x15f bytes
Gallio.XunitAdapter.dll!
Gallio.XunitAdapter.Model.XunitTestController.RunTestMethod
(Gallio.Model.Execution.ITestCommand testCommand =
{Debug_Performance_Test}, System.Reflection.MethodInfo methodInfo =
{Void Debug_Performance_Test()}, Xunit.Sdk.ITestClassCommand
testClassCommand = {Xunit.Sdk.TestClassCommand},
Gallio.Model.ITestStep parentTestStep = {[Step] TestCase}) + 0x1b2
bytes
Gallio.XunitAdapter.dll!
Gallio.XunitAdapter.Model.XunitTestController.RunTestClassCommandAndFinishS tep
(Gallio.Model.Execution.ITestCommand testCommand = {TestCase},
Gallio.Model.Execution.ITestContext testContext =
{Gallio.Model.Execution.ObservableTestContext},
Xunit.Sdk.ITestClassCommand testClassCommand =
{Xunit.Sdk.TestClassCommand}) + 0x344 bytes
Gallio.XunitAdapter.dll!
Gallio.XunitAdapter.Model.XunitTestController.RunTestFixture
(Gallio.Model.Execution.ITestCommand testCommand = {TestCase},
Gallio.XunitAdapter.Model.XunitTypeInfoAdapter typeInfo =
{UnitTest.TestCase}, Gallio.Model.ITestStep parentTestStep = {[Step]
UnitTest}) + 0x10e bytes
Gallio.XunitAdapter.dll!
Gallio.XunitAdapter.Model.XunitTestController.RunTest
(Gallio.Model.Execution.ITestCommand testCommand = {TestCase},
Gallio.Model.ITestStep parentTestStep = {[Step] UnitTest},
Gallio.Runtime.ProgressMonitoring.IProgressMonitor progressMonitor =
{Gallio.Runtime.ProgressMonitoring.RemoteProgressMonitor}) + 0xb0
bytes
Gallio.XunitAdapter.dll!
Gallio.XunitAdapter.Model.XunitTestController.RunTestsImpl
(Gallio.Model.Execution.ITestCommand rootTestCommand = {TestCase},
Gallio.Model.ITestStep parentTestStep = {[Step] UnitTest},
Gallio.Model.Execution.TestExecutionOptions options =
{Gallio.Model.Execution.TestExecutionOptions},
Gallio.Runtime.ProgressMonitoring.IProgressMonitor progressMonitor =
{Gallio.Runtime.ProgressMonitoring.RemoteProgressMonitor}) + 0xd1
bytes
Gallio.dll!Gallio.Model.Execution.BaseTestController.RunTests
(Gallio.Model.Execution.ITestCommand rootTestCommand = {TestCase},
Gallio.Model.ITestStep parentTestStep = {[Step] UnitTest},
Gallio.Model.Execution.TestExecutionOptions options =
{Gallio.Model.Execution.TestExecutionOptions},
Gallio.Runtime.ProgressMonitoring.IProgressMonitor progressMonitor =
{Gallio.Runtime.ProgressMonitoring.RemoteProgressMonitor}) Line 42 +
0x17 bytes C#
Gallio.dll!Gallio.Model.Execution.RecursiveTestController.RunTest
(Gallio.Model.Execution.ITestCommand testCommand = {TestCase},
Gallio.Model.ITestStep parentTestStep = {[Step] UnitTest},
Gallio.Model.Execution.TestExecutionOptions options =
{Gallio.Model.Execution.TestExecutionOptions},
Gallio.Runtime.ProgressMonitoring.IProgressMonitor progressMonitor =
{Gallio.Runtime.ProgressMonitoring.RemoteProgressMonitor}) Line 53 +
0x18 bytes C#
Gallio.dll!
Gallio.Model.Execution.RecursiveTestController.RunNonMasterTest
(Gallio.Model.Execution.ITestCommand testCommand = {UnitTest},
Gallio.Model.ITestStep parentTestStep = {[Step] xUnit.net
v1.1.0.1323}, Gallio.Model.Execution.TestExecutionOptions options =
{Gallio.Model.Execution.TestExecutionOptions},
Gallio.Runtime.ProgressMonitoring.IProgressMonitor progressMonitor =
{Gallio.Runtime.ProgressMonitoring.RemoteProgressMonitor}) Line 85 +
0x42 bytes C#
Gallio.dll!Gallio.Model.Execution.RecursiveTestController.RunTest
(Gallio.Model.Execution.ITestCommand testCommand = {UnitTest},
Gallio.Model.ITestStep parentTestStep = {[Step] xUnit.net
v1.1.0.1323}, Gallio.Model.Execution.TestExecutionOptions options =
{Gallio.Model.Execution.TestExecutionOptions},
Gallio.Runtime.ProgressMonitoring.IProgressMonitor progressMonitor =
{Gallio.Runtime.ProgressMonitoring.RemoteProgressMonitor}) Line 67 +
0x14 bytes C#
Gallio.dll!
Gallio.Model.Execution.RecursiveTestController.RunNonMasterTest
(Gallio.Model.Execution.ITestCommand testCommand = {xUnit.net
v1.1.0.1323}, Gallio.Model.ITestStep parentTestStep = {[Step] Root},
Gallio.Model.Execution.TestExecutionOptions options =
{Gallio.Model.Execution.TestExecutionOptions},
Gallio.Runtime.ProgressMonitoring.IProgressMonitor progressMonitor =
{Gallio.Runtime.ProgressMonitoring.RemoteProgressMonitor}) Line 85 +
0x42 bytes C#
Gallio.dll!Gallio.Model.Execution.RecursiveTestController.RunTest
(Gallio.Model.Execution.ITestCommand testCommand = {xUnit.net
v1.1.0.1323}, Gallio.Model.ITestStep parentTestStep = {[Step] Root},
Gallio.Model.Execution.TestExecutionOptions options =
{Gallio.Model.Execution.TestExecutionOptions},
Gallio.Runtime.ProgressMonitoring.IProgressMonitor progressMonitor =
{Gallio.Runtime.ProgressMonitoring.RemoteProgressMonitor}) Line 67 +
0x14 bytes C#
Gallio.dll!
Gallio.Model.Execution.RecursiveTestController.RunNonMasterTest
(Gallio.Model.Execution.ITestCommand testCommand = {Root (explicit)},
Gallio.Model.ITestStep parentTestStep = null,
Gallio.Model.Execution.TestExecutionOptions options =
{Gallio.Model.Execution.TestExecutionOptions},
Gallio.Runtime.ProgressMonitoring.IProgressMonitor progressMonitor =
{Gallio.Runtime.ProgressMonitoring.RemoteProgressMonitor}) Line 85 +
0x42 bytes C#
Gallio.dll!
Gallio.Model.Execution.RecursiveTestController.RunTestsImpl
(Gallio.Model.Execution.ITestCommand rootTestCommand = {Root
(explicit)}, Gallio.Model.ITestStep parentTestStep = null,
Gallio.Model.Execution.TestExecutionOptions options =
{Gallio.Model.Execution.TestExecutionOptions},
Gallio.Runtime.ProgressMonitoring.IProgressMonitor progressMonitor =
{Gallio.Runtime.ProgressMonitoring.RemoteProgressMonitor}) Line 35 +
0x15 bytes C#
Gallio.dll!Gallio.Model.Execution.BaseTestController.RunTests
(Gallio.Model.Execution.ITestCommand rootTestCommand = {Root
(explicit)}, Gallio.Model.ITestStep parentTestStep = null,
Gallio.Model.Execution.TestExecutionOptions options =
{Gallio.Model.Execution.TestExecutionOptions},
Gallio.Runtime.ProgressMonitoring.IProgressMonitor progressMonitor =
{Gallio.Runtime.ProgressMonitoring.RemoteProgressMonitor}) Line 42 +
0x17 bytes C#
Gallio.dll!
Gallio.Runner.Harness.DefaultTestHarness.RunAllTestCommands.AnonymousMethod
() Line 291 + 0x20 bytes C#
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart_Context
(object state) + 0x66 bytes
mscorlib.dll!System.Threading.ExecutionContext.Run
(System.Threading.ExecutionContext executionContext,
System.Threading.ContextCallback callback, object state) + 0x6f bytes
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart() + 0x44
bytes
[Appdomain Transition]
> UnitTest.DLL!UnitTest.TestCase.Debug_Performance_Test() Line 13 C#
[Native to Managed Transition]
[Managed to Native Transition]
Gallio.dll!
Gallio.Framework.Pattern.PatternTestInstanceState.InvokeTestMethod()
Line 385 + 0x24 bytes C#
Gallio.dll!
Gallio.Framework.Pattern.TestMethodPatternAttribute.Execute
(Gallio.Framework.Pattern.PatternTestInstanceState state =
{Gallio.Framework.Pattern.PatternTestInstanceState}) Line 171 + 0xb
bytes C#
MbUnit.dll!MbUnit.Framework.TestAttribute.Execute
(Gallio.Framework.Pattern.PatternTestInstanceState state =
{Gallio.Framework.Pattern.PatternTestInstanceState}) Line 68 + 0xc
bytes C#
Gallio.dll!
Gallio.Framework.Pattern.TestMethodPatternAttribute.SetTestSemantics.Anonym ousMethod
(Gallio.Framework.Pattern.PatternTestInstanceState state =
{Gallio.Framework.Pattern.PatternTestInstanceState}) Line 161 + 0xb
bytes C#
Gallio.dll!
Gallio.Framework.Pattern.PatternTestInstanceActions.ExecuteTestInstance
(Gallio.Framework.Pattern.PatternTestInstanceState testInstanceState =
{Gallio.Framework.Pattern.PatternTestInstanceState}) Line 200 C#
Gallio.dll!
Gallio.Framework.Pattern.PatternTestInstanceActions.ExecuteTestInstance
(Gallio.Framework.Pattern.PatternTestInstanceState testInstanceState =
{Gallio.Framework.Pattern.PatternTestInstanceState}) Line 200 C#
Gallio.dll!
...
read more »