From 8d1d348ad0acf1228ec3bfa4448ee9694fec17bb Mon Sep 17 00:00:00 2001 From: Drew Scoggins Date: Fri, 9 Sep 2016 11:27:47 -0700 Subject: [PATCH 1/4] Add CoreCLR perf test support to Jenkins Made changes to the perf.groovy to add support for running the CoreCLR performance tests in the Perflab directory. Also made changes to the runner script for CoreCLR to allow it to run more than one type of test. --- .gitignore | 3 + perf.groovy | 70 ++++++++++++++++-- tests/scripts/run-xunit-perf.cmd | 121 ++++++++++++++++++++++++++----- 3 files changed, 169 insertions(+), 25 deletions(-) diff --git a/.gitignore b/.gitignore index dbd3dd677d1c..b3ac01be870e 100644 --- a/.gitignore +++ b/.gitignore @@ -301,3 +301,6 @@ cross/rootfs/* # JIT32 files src/jit32 + +# performance testing sandbox +sandbox diff --git a/perf.groovy b/perf.groovy index e7100f8de975..aea3c45d24f0 100644 --- a/perf.groovy +++ b/perf.groovy @@ -23,19 +23,75 @@ def static getOSGroup(def os) { assert osGroup != null : "Could not find os group for ${os}" return osGroupMap[os] } +// Setup perflab tests runs +[true, false].each { isPR -> + ['Windows_NT'].each { os -> + ['x64'].each { architecture -> + def configuration = 'Release' + def runType = isPR ? 'private' : 'rolling' + def benchViewName = isPR ? 'coreclr private %ghprbPullTitle%' : 'coreclr rolling %GIT_BRANCH_WITHOUT_ORIGIN% %GIT_COMMIT%' + def newJob = job(Utilities.getFullJobName(project, "perf_perflab_${os}", isPR)) { + // Set the label. + label('windows_clr_perf') + wrappers { + credentialsBinding { + string('BV_UPLOAD_SAS_TOKEN', 'CoreCLR Perf BenchView Sas') + } + } + + steps { + // Batch + + batchFile("C:\\Tools\\nuget.exe install Microsoft.BenchView.JSONFormat -Source http://benchviewtestfeed.azurewebsites.net/nuget -OutputDirectory C:\\tools -Prerelease -ExcludeVersion") + //Do this here to remove the origin but at the front of the branch name as this is a problem for BenchView + //we have to do it all as one statement because cmd is called each time and we lose the set environment variable + batchFile("if [%GIT_BRANCH:~0,7%] == [origin/] (set GIT_BRANCH_WITHOUT_ORIGIN=%GIT_BRANCH:origin/=%) else (set GIT_BRANCH_WITHOUT_ORIGIN=%GIT_BRANCH%)\n" + + "py C:\\tools\\Microsoft.BenchView.JSONFormat\\tools\\submission-metadata.py --name " + "\"" + benchViewName + "\"" + " --user " + "\"dotnet-bot@microsoft.com\"\n" + + "py C:\\tools\\Microsoft.BenchView.JSONFormat\\tools\\build.py git --branch %GIT_BRANCH_WITHOUT_ORIGIN% --type " + runType) + batchFile("py C:\\tools\\Microsoft.BenchView.JSONFormat\\tools\\machinedata.py") + batchFile("set __TestIntermediateDir=int&&build.cmd release ${architecture}") + batchFile("tests\\runtest.cmd release ${architecture} GenerateLayoutOnly") + batchFile("tests\\scripts\\run-xunit-perf.cmd -arch ${architecture} -configuration ${configuration} -testBinLoc bin\\tests\\Windows_NT.${architecture}.Release\\performance\\perflab\\Perflab -library -uploadToBenchview C:\\Tools\\Microsoft.Benchview.JSONFormat\\tools -runtype " + runType) + } + } + + // Save machinedata.json to /artifact/bin/ Jenkins dir + def archiveSettings = new ArchivalSettings() + archiveSettings.addFiles('sandbox\\perf-*.xml') + Utilities.addArchival(newJob, archiveSettings) + + Utilities.standardJobSetup(newJob, project, isPR, "*/${branch}") + + if (isPR) { + TriggerBuilder builder = TriggerBuilder.triggerOnPullRequest() + builder.setGithubContext("${os} CoreCLR Perf Tests") + builder.triggerOnlyOnComment() + builder.setCustomTriggerPhrase("(?i).*test\\W+${os}\\W+perf.*") + builder.triggerForBranch(branch) + builder.emitTrigger(newJob) + } + else { + // Set a push trigger + TriggerBuilder builder = TriggerBuilder.triggerOnCommit() + builder.emitTrigger(newJob) + } + } + } +} [true, false].each { isPR -> ['Windows_NT'].each { os -> def newJob = job(Utilities.getFullJobName(project, "perf_${os}", isPR)) { + // Set the label. label('performance') steps { // Batch - batchFile("C:\\tools\\nuget install Microsoft.BenchView.JSONFormat -Source http://benchviewtestfeed.azurewebsites.net/nuget -OutputDirectory C:\\tools -Prerelease") - batchFile("python C:\\tools\\Microsoft.BenchView.JSONFormat.0.1.0-pre008\\tools\\machinedata.py") - batchFile("set __TestIntermediateDir=int&&build.cmd release x64") - batchFile("tests\\runtest.cmd release x64") - batchFile("tests\\scripts\\run-xunit-perf.cmd") + batchFile("C:\\Tools\\nuget.exe install Microsoft.BenchView.JSONFormat -Source http://benchviewtestfeed.azurewebsites.net/nuget -OutputDirectory C:\\tools -Prerelease -ExcludeVersion") + batchFile("py C:\\tools\\Microsoft.BenchView.JSONFormat\\tools\\machinedata.py") + batchFile("set __TestIntermediateDir=int&&build.cmd release ${architecture}") + batchFile("tests\\runtest.cmd release ${architecture}") + batchFile("tests\\scripts\\run-xunit-perf.cmd -arch ${architecture} -configuration ${configuration} -testBinLoc bin\\tests\\Windows_NT.x64.Release\\Jit\\Performance\\CodeQuality") } } @@ -122,6 +178,8 @@ def static getOSGroup(def os) { } } + Utilities.setMachineAffinity(newJob, os, 'latest-or-auto') // Just run against Linux VM's for now. + // Save machinedata.json to /artifact/bin/ Jenkins dir def archiveSettings = new ArchivalSettings() archiveSettings.addFiles('perf-*.xml') @@ -142,4 +200,4 @@ def static getOSGroup(def os) { builder.emitTrigger(newJob) } } // os -} // isPR +} // isPR \ No newline at end of file diff --git a/tests/scripts/run-xunit-perf.cmd b/tests/scripts/run-xunit-perf.cmd index cece893cab1a..6fc2d0a5954d 100644 --- a/tests/scripts/run-xunit-perf.cmd +++ b/tests/scripts/run-xunit-perf.cmd @@ -5,11 +5,18 @@ @setlocal @echo off -set HERE=%CD% +rem Set defaults for the file extension, architecture and configuration set CORECLR_REPO=%CD% -set CORECLR_OVERLAY=%CORECLR_REPO%\bin\tests\Windows_NT.x64.Release\Tests\Core_Root -set CORECLR_PERF=%CORECLR_REPO%\bin\tests\Windows_NT.x64.Release\Jit\Performance\CodeQuality -set RUNLOG=%HERE%\bin\Logs\perfrun.log +set TEST_FILE_EXT=exe +set TEST_ARCH=x64 +set TEST_CONFIG=Release + +goto :ARGLOOP + +:SETUP + +set CORECLR_OVERLAY=%CORECLR_REPO%\bin\tests\Windows_NT.%TEST_ARCH%.%TEST_CONFIG%\Tests\Core_Root +set RUNLOG=%CORECLR_REPO%\bin\Logs\perfrun.log if NOT EXIST %CORECLR_OVERLAY% ( echo Can't find test overlay directory '%CORECLR_OVERLAY%' @@ -17,8 +24,6 @@ if NOT EXIST %CORECLR_OVERLAY% ( exit /B 1 ) -:SETUP - @echo --- setting up sandbox rd /s /q sandbox @@ -28,35 +33,113 @@ pushd sandbox @rem stage stuff we need @rem xunit and perf -xcopy /sy %CORECLR_REPO%\packages\Microsoft.DotNet.xunit.performance.runner.Windows\1.0.0-alpha-build0035\tools\* . > %RUNLOG% -xcopy /sy %CORECLR_REPO%\packages\Microsoft.DotNet.xunit.performance.analysis\1.0.0-alpha-build0035\tools\* . > %RUNLOG% -xcopy /sy %CORECLR_REPO%\packages\xunit.console.netcore\1.0.2-prerelease-00101\runtimes\any\native\* . > %RUNLOG% -xcopy /sy %CORECLR_REPO%\bin\tests\Windows_NT.x64.Release\Tests\Core_Root\* . > %RUNLOG% +xcopy /sy %CORECLR_REPO%\packages\Microsoft.DotNet.xunit.performance.runner.Windows\1.0.0-alpha-build0040\tools\* . > %RUNLOG% +xcopy /sy %CORECLR_REPO%\packages\Microsoft.DotNet.xunit.performance.analysis\1.0.0-alpha-build0040\tools\* . >> %RUNLOG% +xcopy /sy %CORECLR_REPO%\packages\xunit.console.netcore\1.0.2-prerelease-00177\runtimes\any\native\* . >> %RUNLOG% +xcopy /sy %CORECLR_REPO%\bin\tests\Windows_NT.%TEST_ARCH%.%TEST_CONFIG%\Tests\Core_Root\* . >> %RUNLOG% @rem find and stage the tests - -for /R %CORECLR_PERF% %%T in (*.exe) do ( +for /R %CORECLR_PERF% %%T in (*.%TEST_FILE_EXT%) do ( call :DOIT %%T ) goto :EOF :DOIT - set BENCHNAME=%~n1 set PERFOUT=perf-%BENCHNAME% set XMLOUT=%PERFOUT%-summary.xml echo --- Running %BENCHNAME% -xcopy /s %1 . > %RUNLOG% +xcopy /s %1 . >> %RUNLOG% -set CORE_ROOT=%HERE%\sandbox +set CORE_ROOT=%CORECLR_REPO%\sandbox -xunit.performance.run.exe %BENCHNAME%.exe -runner xunit.console.netcore.exe -runnerhost corerun.exe -verbose -runid %PERFOUT% > %BENCHNAME%.out +xunit.performance.run.exe %BENCHNAME%.%TEST_FILE_EXT% -runner xunit.console.netcore.exe -runnerhost corerun.exe -verbose -runid %PERFOUT% > %BENCHNAME%.out xunit.performance.analysis.exe %PERFOUT%.xml -xml %XMLOUT% > %BENCHNAME%-analysis.out -type %XMLOUT% | findstr "test name" -type %XMLOUT% | findstr Duration -type %XMLOUT% | findstr InstRetired +@rem optionally upload results to benchview +if not [%BENCHVIEW_PATH%] == [] ( + py %BENCHVIEW_PATH%\measurement.py xunit perf-Perflab.xml --better desc --drop-first-value + py %BENCHVIEW_PATH%\submission.py measurement.json ^ + --build ..\build.json ^ + --machine-data ..\machinedata.json ^ + --metadata ..\submission-metadata.json ^ + --group "CoreCLR" ^ + --type "%RUN_TYPE%" ^ + --config-name "%TEST_CONFIG%" ^ + --config Configuration "%TEST_CONFIG%" ^ + --config OS "Windows_NT" ^ + --arch "%TEST_ARCH%" ^ + --machinepool "PerfSnake" + py %BENCHVIEW_PATH%\upload.py submission.json --container coreclr +) else ( + type %XMLOUT% | findstr "test name" + type %XMLOUT% | findstr Duration + type %XMLOUT% | findstr InstRetired +) + +goto :EOF + +:ARGLOOP +IF /I [%1] == [-testBinLoc] ( +set CORECLR_PERF=%CORECLR_REPO%\%2 +shift +shift +goto :ARGLOOP +) +IF /I [%1] == [-runtype] ( +set RUN_TYPE=%2 +shift +shift +goto :ARGLOOP +) +IF /I [%1] == [-library] ( +set TEST_FILE_EXT=dll +shift +goto :ARGLOOP +) +IF /I [%1] == [-uploadtobenchview] ( +set BENCHVIEW_PATH=%2 +shift +shift +goto :ARGLOOP +) +IF /I [%1] == [-arch] ( +set TEST_ARCH=%2 +shift +shift +goto :ARGLOOP +) +IF /I [%1] == [-configuration] ( +set TEST_CONFIG=%2 +shift +shift +goto :ARGLOOP +) +if /I [%1] == [-?] ( +goto :USAGE +) +if /I [%1] == [-help] ( +goto :USAGE +) + +if [%CORECLR_PERF%] == [] ( +goto :USAGE +) + +goto :SETUP + +:USAGE +echo run-xunit-perf.cmd -testBinLoc ^ [-library] [-arch] ^ [-configuration] ^ [-uploadToBenchview] ^ [-runtype] ^ + +echo For the path to the tests you can pass a parent directory and the script will grovel for +echo all tests in subdirectories and run them. +echo The library flag denotes whether the tests are build as libraries (.dll) or an executable (.exe) +echo Architecture defaults to x64 and configuration defaults to release. +echo -uploadtoBenchview is used to specify a path to the Benchview tooling and when this flag is +echo set we will upload the results of the tests to the coreclr container in benchviewupload. +echo Runtype sets the runtype that we upload to Benchview, rolling for regular runs, and private for +echo PRs. From 6340f359f37b97fa20fe5b0f1b944aee8db20316 Mon Sep 17 00:00:00 2001 From: John Soklaski Date: Mon, 17 Oct 2016 18:09:58 -0700 Subject: [PATCH 2/4] Move benchmarks to use netstandard1.4 instead of netcoreapp1.0 to fix desktop reflection issue --- tests/scripts/run-xunit-perf.cmd | 6 +-- .../CodeQuality/BenchF/Adams/Adams.csproj | 1 + .../BenchF/BenchMk2/BenchMk2.csproj | 1 + .../BenchF/BenchMrk/BenchMrk.csproj | 1 + .../CodeQuality/BenchF/Bisect/Bisect.csproj | 1 + .../CodeQuality/BenchF/DMath/DMath.csproj | 1 + .../CodeQuality/BenchF/FFT/FFT.csproj | 1 + .../CodeQuality/BenchF/InProd/InProd.csproj | 1 + .../CodeQuality/BenchF/InvMt/InvMt.csproj | 1 + .../CodeQuality/BenchF/LLoops/LLoops.csproj | 1 + .../CodeQuality/BenchF/Lorenz/Lorenz.csproj | 1 + .../CodeQuality/BenchF/MatInv4/MatInv4.csproj | 1 + .../CodeQuality/BenchF/NewtE/NewtE.csproj | 1 + .../CodeQuality/BenchF/NewtR/NewtR.csproj | 1 + .../CodeQuality/BenchF/Regula/Regula.csproj | 1 + .../CodeQuality/BenchF/Romber/Romber.csproj | 1 + .../CodeQuality/BenchF/Secant/Secant.csproj | 1 + .../CodeQuality/BenchF/Simpsn/Simpsn.csproj | 1 + .../CodeQuality/BenchF/SqMtx/SqMtx.csproj | 1 + .../CodeQuality/BenchF/Trap/Trap.csproj | 1 + .../CodeQuality/BenchF/Whetsto/Whetsto.csproj | 1 + .../CodeQuality/BenchI/8Queens/8Queens.csproj | 1 + .../BenchI/Ackermann/Ackermann.csproj | 1 + .../BenchI/AddArray/AddArray.csproj | 1 + .../BenchI/AddArray2/AddArray2.csproj | 1 + .../CodeQuality/BenchI/Array1/Array1.csproj | 1 + .../CodeQuality/BenchI/Array2/Array2.csproj | 1 + .../CodeQuality/BenchI/BenchE/BenchE.csproj | 1 + .../BenchI/BubbleSort/BubbleSort.csproj | 1 + .../BenchI/BubbleSort2/BubbleSort2.csproj | 1 + .../CodeQuality/BenchI/CSieve/CSieve.csproj | 1 + .../CodeQuality/BenchI/Fib/Fib.csproj | 1 + .../BenchI/HeapSort/HeapSort.csproj | 1 + .../BenchI/IniArray/IniArray.csproj | 1 + .../BenchI/LogicArray/LogicArray.csproj | 1 + .../BenchI/Midpoint/Midpoint.csproj | 1 + .../BenchI/MulMatrix/MulMatrix.csproj | 1 + .../BenchI/NDhrystone/NDhrystone.csproj | 1 + .../BenchI/Permutate/Permutate.csproj | 1 + .../CodeQuality/BenchI/Pi/Pi.csproj | 1 + .../CodeQuality/BenchI/Puzzle/Puzzle.csproj | 1 + .../BenchI/QuickSort/QuickSort.csproj | 1 + .../BenchI/TreeInsert/TreeInsert.csproj | 1 + .../BenchI/TreeSort/TreeSort.csproj | 1 + .../BenchI/XposMatrix/XposMatrix.csproj | 1 + .../binarytrees/binarytrees.csproj | 1 + .../BenchmarksGame/fasta/fasta.csproj | 1 + .../fastaredux/fastaredux.csproj | 1 + .../BenchmarksGame/nbody/nbody.csproj | 1 + .../BenchmarksGame/pidigits/pi-digits.csproj | 1 + .../spectralnorm/spectralnorm.csproj | 1 + .../CodeQuality/Burgers/Burgers.csproj | 1 + .../CodeQuality/Bytemark/Bytemark.csproj | 1 + .../FractalPerf/FractalPerf.csproj | 1 + .../Inlining/ConstantArgsByte.csproj | 1 + .../Inlining/ConstantArgsChar.csproj | 1 + .../Inlining/ConstantArgsDouble.csproj | 1 + .../Inlining/ConstantArgsFloat.csproj | 1 + .../Inlining/ConstantArgsInt.csproj | 1 + .../Inlining/ConstantArgsLong.csproj | 1 + .../Inlining/ConstantArgsSByte.csproj | 1 + .../Inlining/ConstantArgsShort.csproj | 1 + .../Inlining/ConstantArgsString.csproj | 1 + .../Inlining/ConstantArgsUInt.csproj | 1 + .../Inlining/ConstantArgsULong.csproj | 1 + .../Inlining/ConstantArgsUShort.csproj | 1 + .../CodeQuality/Inlining/NoThrowInline.csproj | 1 + .../Performance/CodeQuality/Linq/Linq.csproj | 1 + .../Math/Functions/Functions.csproj | 3 +- .../CodeQuality/Roslyn/CscBench.csproj | 1 + .../SIMD/ConsoleMandel/ConsoleMandel.csproj | 1 + .../SIMD/RayTracer/RayTracer.csproj | 1 + .../CodeQuality/SciMark/SciMark.csproj | 1 + .../Serialization/Deserialize.csproj | 1 + .../Serialization/Serialize.csproj | 1 + .../CodeQuality/V8/Crypto/Crypto.csproj | 1 + .../CodeQuality/V8/DeltaBlue/DeltaBlue.csproj | 1 + .../CodeQuality/V8/Richards/Richards.csproj | 1 + .../JIT/config/benchmark+roslyn/project.json | 11 +----- .../config/benchmark+serialize/project.json | 11 +----- tests/src/JIT/config/benchmark/project.json | 11 +----- tests/src/performance/perflab/PerfLab.csproj | 5 +++ tests/src/performance/project.json | 39 +++++++++++++++++++ 83 files changed, 128 insertions(+), 34 deletions(-) create mode 100644 tests/src/performance/project.json diff --git a/tests/scripts/run-xunit-perf.cmd b/tests/scripts/run-xunit-perf.cmd index 6fc2d0a5954d..2671dfd6e252 100644 --- a/tests/scripts/run-xunit-perf.cmd +++ b/tests/scripts/run-xunit-perf.cmd @@ -33,9 +33,9 @@ pushd sandbox @rem stage stuff we need @rem xunit and perf -xcopy /sy %CORECLR_REPO%\packages\Microsoft.DotNet.xunit.performance.runner.Windows\1.0.0-alpha-build0040\tools\* . > %RUNLOG% -xcopy /sy %CORECLR_REPO%\packages\Microsoft.DotNet.xunit.performance.analysis\1.0.0-alpha-build0040\tools\* . >> %RUNLOG% -xcopy /sy %CORECLR_REPO%\packages\xunit.console.netcore\1.0.2-prerelease-00177\runtimes\any\native\* . >> %RUNLOG% +xcopy /sy %CORECLR_REPO%\packages\Microsoft.DotNet.xunit.performance.runner.Windows\1.0.0-alpha-build0035\tools\* . > %RUNLOG% +xcopy /sy %CORECLR_REPO%\packages\Microsoft.DotNet.xunit.performance.analysis\1.0.0-alpha-build0035\tools\* . >> %RUNLOG% +xcopy /sy %CORECLR_REPO%\packages\xunit.console.netcore\1.0.2-prerelease-00101\runtimes\any\native\* . >> %RUNLOG% xcopy /sy %CORECLR_REPO%\bin\tests\Windows_NT.%TEST_ARCH%.%TEST_CONFIG%\Tests\Core_Root\* . >> %RUNLOG% @rem find and stage the tests diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/Adams/Adams.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/Adams/Adams.csproj index 91fe0d6aac9e..580bd54343c3 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/Adams/Adams.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/Adams/Adams.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/BenchMk2/BenchMk2.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/BenchMk2/BenchMk2.csproj index 4d4906212ad4..a8c38ad6637a 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/BenchMk2/BenchMk2.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/BenchMk2/BenchMk2.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/BenchMrk/BenchMrk.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/BenchMrk/BenchMrk.csproj index 0986eeea0329..a2acd3bea86a 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/BenchMrk/BenchMrk.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/BenchMrk/BenchMrk.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/Bisect/Bisect.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/Bisect/Bisect.csproj index 4b2487c795fd..210f6f194031 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/Bisect/Bisect.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/Bisect/Bisect.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/DMath/DMath.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/DMath/DMath.csproj index cc70fbfe14f6..6ca118436505 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/DMath/DMath.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/DMath/DMath.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/FFT/FFT.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/FFT/FFT.csproj index 3025d4a34c6f..bfb377fe62b5 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/FFT/FFT.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/FFT/FFT.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/InProd/InProd.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/InProd/InProd.csproj index fb85de3d37a4..416c1b966202 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/InProd/InProd.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/InProd/InProd.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/InvMt/InvMt.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/InvMt/InvMt.csproj index ebbd3bf950d3..c7a4bb91b0ce 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/InvMt/InvMt.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/InvMt/InvMt.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/LLoops/LLoops.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/LLoops/LLoops.csproj index b44736393c9f..cabdbd6607cd 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/LLoops/LLoops.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/LLoops/LLoops.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/Lorenz/Lorenz.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/Lorenz/Lorenz.csproj index efd935bb745f..593474426a1a 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/Lorenz/Lorenz.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/Lorenz/Lorenz.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/MatInv4/MatInv4.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/MatInv4/MatInv4.csproj index 5b1272f5da73..13238071d262 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/MatInv4/MatInv4.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/MatInv4/MatInv4.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/NewtE/NewtE.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/NewtE/NewtE.csproj index 225f7ed3089f..dcf02d3f67e9 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/NewtE/NewtE.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/NewtE/NewtE.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/NewtR/NewtR.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/NewtR/NewtR.csproj index 2d68e6c73e48..1502b8541014 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/NewtR/NewtR.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/NewtR/NewtR.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/Regula/Regula.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/Regula/Regula.csproj index 5f8aacec420c..4cd3e0e069bc 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/Regula/Regula.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/Regula/Regula.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/Romber/Romber.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/Romber/Romber.csproj index 934a837cce17..64bbe04cdbb3 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/Romber/Romber.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/Romber/Romber.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/Secant/Secant.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/Secant/Secant.csproj index fa24d12ce4c8..1a0758ba5146 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/Secant/Secant.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/Secant/Secant.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/Simpsn/Simpsn.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/Simpsn/Simpsn.csproj index ee590d5a9dba..67f81313f692 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/Simpsn/Simpsn.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/Simpsn/Simpsn.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/SqMtx/SqMtx.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/SqMtx/SqMtx.csproj index af1c2a431ed3..d371554449c2 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/SqMtx/SqMtx.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/SqMtx/SqMtx.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/Trap/Trap.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/Trap/Trap.csproj index 5df6f5f24b5e..8a46ca61d719 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/Trap/Trap.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/Trap/Trap.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchF/Whetsto/Whetsto.csproj b/tests/src/JIT/Performance/CodeQuality/BenchF/Whetsto/Whetsto.csproj index b3860d200ca6..46898e31884c 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchF/Whetsto/Whetsto.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchF/Whetsto/Whetsto.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/8Queens/8Queens.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/8Queens/8Queens.csproj index 5101c0189aa2..efef461379f1 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/8Queens/8Queens.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/8Queens/8Queens.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/Ackermann/Ackermann.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/Ackermann/Ackermann.csproj index 0437fa292d61..8d0feb5a017f 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/Ackermann/Ackermann.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/Ackermann/Ackermann.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/AddArray/AddArray.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/AddArray/AddArray.csproj index 0f2e52cec966..2fd1aae52114 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/AddArray/AddArray.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/AddArray/AddArray.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/AddArray2/AddArray2.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/AddArray2/AddArray2.csproj index 76a5be9a1a00..cb8f12ddb2a9 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/AddArray2/AddArray2.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/AddArray2/AddArray2.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/Array1/Array1.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/Array1/Array1.csproj index ff6b6fce9d75..b7d791882315 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/Array1/Array1.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/Array1/Array1.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/Array2/Array2.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/Array2/Array2.csproj index 134badce0e55..0932bfb0ea4e 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/Array2/Array2.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/Array2/Array2.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/BenchE/BenchE.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/BenchE/BenchE.csproj index 4cba1ed5b5f3..0def91ffa276 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/BenchE/BenchE.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/BenchE/BenchE.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/BubbleSort/BubbleSort.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/BubbleSort/BubbleSort.csproj index a72e88e18b9c..6fabe89c8e5c 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/BubbleSort/BubbleSort.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/BubbleSort/BubbleSort.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/BubbleSort2/BubbleSort2.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/BubbleSort2/BubbleSort2.csproj index ab9e7105a2a7..7b5fb93ed902 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/BubbleSort2/BubbleSort2.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/BubbleSort2/BubbleSort2.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/CSieve/CSieve.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/CSieve/CSieve.csproj index a1eb705bd198..599dcd7b7425 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/CSieve/CSieve.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/CSieve/CSieve.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/Fib/Fib.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/Fib/Fib.csproj index 3d2b2ad1f183..2b8c995bd86c 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/Fib/Fib.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/Fib/Fib.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/HeapSort/HeapSort.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/HeapSort/HeapSort.csproj index 095077c7b060..2afbe54997d9 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/HeapSort/HeapSort.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/HeapSort/HeapSort.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/IniArray/IniArray.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/IniArray/IniArray.csproj index 2ec72bc76c77..2fab51071a6b 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/IniArray/IniArray.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/IniArray/IniArray.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/LogicArray/LogicArray.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/LogicArray/LogicArray.csproj index 0fcc3a01cab8..0281fb4ca72b 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/LogicArray/LogicArray.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/LogicArray/LogicArray.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/Midpoint/Midpoint.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/Midpoint/Midpoint.csproj index 6aa956cd6f42..e7e379be8343 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/Midpoint/Midpoint.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/Midpoint/Midpoint.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/MulMatrix/MulMatrix.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/MulMatrix/MulMatrix.csproj index 9be21df26276..5046b02d9e5e 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/MulMatrix/MulMatrix.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/MulMatrix/MulMatrix.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/NDhrystone/NDhrystone.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/NDhrystone/NDhrystone.csproj index e86f5f22dd2b..ea175a5d0430 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/NDhrystone/NDhrystone.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/NDhrystone/NDhrystone.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/Permutate/Permutate.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/Permutate/Permutate.csproj index bebd6b755f8a..cbe211430477 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/Permutate/Permutate.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/Permutate/Permutate.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/Pi/Pi.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/Pi/Pi.csproj index e6990ed7981f..d7d212eace94 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/Pi/Pi.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/Pi/Pi.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/Puzzle/Puzzle.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/Puzzle/Puzzle.csproj index 4dacd1c8b2ae..185bb7c08e8b 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/Puzzle/Puzzle.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/Puzzle/Puzzle.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/QuickSort/QuickSort.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/QuickSort/QuickSort.csproj index 6fef9d75013d..f079692c3c64 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/QuickSort/QuickSort.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/QuickSort/QuickSort.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/TreeInsert/TreeInsert.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/TreeInsert/TreeInsert.csproj index b19f4c113dfb..919c7d2b6e06 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/TreeInsert/TreeInsert.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/TreeInsert/TreeInsert.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/TreeSort/TreeSort.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/TreeSort/TreeSort.csproj index bf4eb1d9dc68..b9f78517a96f 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/TreeSort/TreeSort.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/TreeSort/TreeSort.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchI/XposMatrix/XposMatrix.csproj b/tests/src/JIT/Performance/CodeQuality/BenchI/XposMatrix/XposMatrix.csproj index ff18db8a3a02..922fd5fc3956 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchI/XposMatrix/XposMatrix.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchI/XposMatrix/XposMatrix.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/binarytrees/binarytrees.csproj b/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/binarytrees/binarytrees.csproj index 76582ebd15fc..d970a78c23ef 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/binarytrees/binarytrees.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/binarytrees/binarytrees.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 true diff --git a/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/fasta/fasta.csproj b/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/fasta/fasta.csproj index 3b241824b42c..c153dfae3985 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/fasta/fasta.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/fasta/fasta.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/fastaredux/fastaredux.csproj b/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/fastaredux/fastaredux.csproj index 04f5f5b7e121..38459d270fda 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/fastaredux/fastaredux.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/fastaredux/fastaredux.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/nbody/nbody.csproj b/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/nbody/nbody.csproj index 62af89fb113b..8bf75d660e11 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/nbody/nbody.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/nbody/nbody.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/pidigits/pi-digits.csproj b/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/pidigits/pi-digits.csproj index e7bff7abffdd..005e93a30663 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/pidigits/pi-digits.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/pidigits/pi-digits.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/spectralnorm/spectralnorm.csproj b/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/spectralnorm/spectralnorm.csproj index da53f168894c..74ec22ac539e 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/spectralnorm/spectralnorm.csproj +++ b/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/spectralnorm/spectralnorm.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/Burgers/Burgers.csproj b/tests/src/JIT/Performance/CodeQuality/Burgers/Burgers.csproj index a4b51a817560..c26f22765786 100644 --- a/tests/src/JIT/Performance/CodeQuality/Burgers/Burgers.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Burgers/Burgers.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/Bytemark/Bytemark.csproj b/tests/src/JIT/Performance/CodeQuality/Bytemark/Bytemark.csproj index cb3ee89a45de..160660c9dff4 100644 --- a/tests/src/JIT/Performance/CodeQuality/Bytemark/Bytemark.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Bytemark/Bytemark.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 true diff --git a/tests/src/JIT/Performance/CodeQuality/FractalPerf/FractalPerf.csproj b/tests/src/JIT/Performance/CodeQuality/FractalPerf/FractalPerf.csproj index cf7c97baaf89..d5ad1554b555 100644 --- a/tests/src/JIT/Performance/CodeQuality/FractalPerf/FractalPerf.csproj +++ b/tests/src/JIT/Performance/CodeQuality/FractalPerf/FractalPerf.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsByte.csproj b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsByte.csproj index d6e1ef9296f4..54a8a77e0326 100644 --- a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsByte.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsByte.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsChar.csproj b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsChar.csproj index 8ab437d67237..a3e120357045 100644 --- a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsChar.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsChar.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsDouble.csproj b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsDouble.csproj index 1df5e6e62bd9..beb3776b1751 100644 --- a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsDouble.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsDouble.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsFloat.csproj b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsFloat.csproj index c37b95cfa8e2..bb859c09c545 100644 --- a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsFloat.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsFloat.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsInt.csproj b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsInt.csproj index bbdf7e1c26f7..112d35c9c5a4 100644 --- a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsInt.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsInt.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsLong.csproj b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsLong.csproj index e7afc77ee340..62499dc019a0 100644 --- a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsLong.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsLong.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsSByte.csproj b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsSByte.csproj index 5cea51f8eae9..52538e0fedb1 100644 --- a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsSByte.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsSByte.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsShort.csproj b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsShort.csproj index a64281635855..0013834c8cde 100644 --- a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsShort.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsShort.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsString.csproj b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsString.csproj index d3edbf2d5136..5b5005edfb3c 100644 --- a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsString.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsString.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsUInt.csproj b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsUInt.csproj index bc177a3007e3..1775d19d1a67 100644 --- a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsUInt.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsUInt.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsULong.csproj b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsULong.csproj index 9b77a55c6315..81e10be63378 100644 --- a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsULong.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsULong.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsUShort.csproj b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsUShort.csproj index 5fa1d3359d06..fb88ffb4d2bf 100644 --- a/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsUShort.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Inlining/ConstantArgsUShort.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/Inlining/NoThrowInline.csproj b/tests/src/JIT/Performance/CodeQuality/Inlining/NoThrowInline.csproj index 1ae24d952551..75f617658117 100644 --- a/tests/src/JIT/Performance/CodeQuality/Inlining/NoThrowInline.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Inlining/NoThrowInline.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/Linq/Linq.csproj b/tests/src/JIT/Performance/CodeQuality/Linq/Linq.csproj index c9410e5de622..99fa3f03c61a 100644 --- a/tests/src/JIT/Performance/CodeQuality/Linq/Linq.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Linq/Linq.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/Math/Functions/Functions.csproj b/tests/src/JIT/Performance/CodeQuality/Math/Functions/Functions.csproj index 6d101e4b1954..7e7a74e14218 100644 --- a/tests/src/JIT/Performance/CodeQuality/Math/Functions/Functions.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Math/Functions/Functions.csproj @@ -14,6 +14,7 @@ ..\..\ + .NETStandard,Version=v1.4 @@ -63,4 +64,4 @@ - \ No newline at end of file + diff --git a/tests/src/JIT/Performance/CodeQuality/Roslyn/CscBench.csproj b/tests/src/JIT/Performance/CodeQuality/Roslyn/CscBench.csproj index a2a1e11aab44..b99d74b9bc09 100644 --- a/tests/src/JIT/Performance/CodeQuality/Roslyn/CscBench.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Roslyn/CscBench.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 true diff --git a/tests/src/JIT/Performance/CodeQuality/SIMD/ConsoleMandel/ConsoleMandel.csproj b/tests/src/JIT/Performance/CodeQuality/SIMD/ConsoleMandel/ConsoleMandel.csproj index a986daecfa5a..73a4c99541bb 100644 --- a/tests/src/JIT/Performance/CodeQuality/SIMD/ConsoleMandel/ConsoleMandel.csproj +++ b/tests/src/JIT/Performance/CodeQuality/SIMD/ConsoleMandel/ConsoleMandel.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/SIMD/RayTracer/RayTracer.csproj b/tests/src/JIT/Performance/CodeQuality/SIMD/RayTracer/RayTracer.csproj index ee97b357a2d0..00db61845309 100644 --- a/tests/src/JIT/Performance/CodeQuality/SIMD/RayTracer/RayTracer.csproj +++ b/tests/src/JIT/Performance/CodeQuality/SIMD/RayTracer/RayTracer.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/SciMark/SciMark.csproj b/tests/src/JIT/Performance/CodeQuality/SciMark/SciMark.csproj index 0b633253b815..28127efebc6c 100644 --- a/tests/src/JIT/Performance/CodeQuality/SciMark/SciMark.csproj +++ b/tests/src/JIT/Performance/CodeQuality/SciMark/SciMark.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 SciMark diff --git a/tests/src/JIT/Performance/CodeQuality/Serialization/Deserialize.csproj b/tests/src/JIT/Performance/CodeQuality/Serialization/Deserialize.csproj index 1bdb7782d3a8..8f954077295c 100644 --- a/tests/src/JIT/Performance/CodeQuality/Serialization/Deserialize.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Serialization/Deserialize.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/Serialization/Serialize.csproj b/tests/src/JIT/Performance/CodeQuality/Serialization/Serialize.csproj index 9696785c5ffe..60df05075bd3 100644 --- a/tests/src/JIT/Performance/CodeQuality/Serialization/Serialize.csproj +++ b/tests/src/JIT/Performance/CodeQuality/Serialization/Serialize.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/V8/Crypto/Crypto.csproj b/tests/src/JIT/Performance/CodeQuality/V8/Crypto/Crypto.csproj index 54868d2cc72e..112d7b5a9e01 100644 --- a/tests/src/JIT/Performance/CodeQuality/V8/Crypto/Crypto.csproj +++ b/tests/src/JIT/Performance/CodeQuality/V8/Crypto/Crypto.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/Performance/CodeQuality/V8/DeltaBlue/DeltaBlue.csproj b/tests/src/JIT/Performance/CodeQuality/V8/DeltaBlue/DeltaBlue.csproj index ab952da799c8..0b25633aeb9c 100644 --- a/tests/src/JIT/Performance/CodeQuality/V8/DeltaBlue/DeltaBlue.csproj +++ b/tests/src/JIT/Performance/CodeQuality/V8/DeltaBlue/DeltaBlue.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 true diff --git a/tests/src/JIT/Performance/CodeQuality/V8/Richards/Richards.csproj b/tests/src/JIT/Performance/CodeQuality/V8/Richards/Richards.csproj index 499b6e5b5bb8..b4572c61a596 100644 --- a/tests/src/JIT/Performance/CodeQuality/V8/Richards/Richards.csproj +++ b/tests/src/JIT/Performance/CodeQuality/V8/Richards/Richards.csproj @@ -13,6 +13,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages ..\..\ 7a9bfb7d + .NETStandard,Version=v1.4 diff --git a/tests/src/JIT/config/benchmark+roslyn/project.json b/tests/src/JIT/config/benchmark+roslyn/project.json index 1dd631b50405..1b4c7e17eb89 100644 --- a/tests/src/JIT/config/benchmark+roslyn/project.json +++ b/tests/src/JIT/config/benchmark+roslyn/project.json @@ -26,20 +26,11 @@ "xunit.runner.utility": "2.1.0" }, "frameworks": { - "netcoreapp1.0": { + "netstandard1.4": { "imports": [ "dnxcore50", "portable-net45+win8" ] } - }, - "runtimes": { - "win7-x86": {}, - "win7-x64": {}, - "ubuntu.14.04-x64": {}, - "osx.10.10-x64": {}, - "centos.7-x64": {}, - "rhel.7-x64": {}, - "debian.8-x64": {} } } diff --git a/tests/src/JIT/config/benchmark+serialize/project.json b/tests/src/JIT/config/benchmark+serialize/project.json index e346beb87587..270f4e668c42 100644 --- a/tests/src/JIT/config/benchmark+serialize/project.json +++ b/tests/src/JIT/config/benchmark+serialize/project.json @@ -23,20 +23,11 @@ "xunit.runner.utility": "2.1.0" }, "frameworks": { - "netcoreapp1.0": { + "netstandard1.4": { "imports": [ "dnxcore50", "portable-net45+win8" ] } - }, - "runtimes": { - "win7-x86": {}, - "win7-x64": {}, - "ubuntu.14.04-x64": {}, - "osx.10.10-x64": {}, - "centos.7-x64": {}, - "rhel.7-x64": {}, - "debian.8-x64": {} } } diff --git a/tests/src/JIT/config/benchmark/project.json b/tests/src/JIT/config/benchmark/project.json index 2f8b893f151c..948a2b23b6c9 100644 --- a/tests/src/JIT/config/benchmark/project.json +++ b/tests/src/JIT/config/benchmark/project.json @@ -26,20 +26,11 @@ "xunit.runner.utility": "2.1.0" }, "frameworks": { - "netcoreapp1.0": { + "netstandard1.4": { "imports": [ "dnxcore50", "portable-net45+win8" ] } - }, - "runtimes": { - "win7-x86": {}, - "win7-x64": {}, - "ubuntu.14.04-x64": {}, - "osx.10.10-x64": {}, - "centos.7-x64": {}, - "rhel.7-x64": {}, - "debian.8-x64": {} } } diff --git a/tests/src/performance/perflab/PerfLab.csproj b/tests/src/performance/perflab/PerfLab.csproj index 6090bd81ab52..38fe57364a9f 100644 --- a/tests/src/performance/perflab/PerfLab.csproj +++ b/tests/src/performance/perflab/PerfLab.csproj @@ -15,12 +15,17 @@ ..\..\ 7a9bfb7d $(DefineConstants);STATIC + .NETStandard,Version=v1.4 + + ..\project.json + ..\project.lock.json + False diff --git a/tests/src/performance/project.json b/tests/src/performance/project.json new file mode 100644 index 000000000000..851d47b76466 --- /dev/null +++ b/tests/src/performance/project.json @@ -0,0 +1,39 @@ +{ + "dependencies": { + "Microsoft.DotNet.xunit.performance": "1.0.0-alpha-build0035", + "Microsoft.DotNet.xunit.performance.analysis": "1.0.0-alpha-build0035", + "Microsoft.DotNet.xunit.performance.runner.Windows": "1.0.0-alpha-build0035", + "Microsoft.NETCore.Platforms": "1.1.0-preview1-24530-04", + "System.Collections.NonGeneric": "4.3.0-preview1-24530-04", + "System.Console": "4.3.0-preview1-24530-04", + "System.IO.FileSystem": "4.3.0-preview1-24530-04", + "System.Linq": "4.3.0-preview1-24530-04", + "System.Linq.Expressions": "4.3.0-preview1-24530-04", + "System.Numerics.Vectors": "4.3.0-preview1-24530-04", + "System.Reflection": "4.3.0-preview1-24530-04", + "System.Reflection.Extensions": "4.3.0-preview1-24530-04", + "System.Reflection.TypeExtensions": "4.3.0-preview1-24530-04", + "System.Runtime": "4.3.0-preview1-24530-04", + "System.Runtime.Extensions": "4.3.0-preview1-24530-04", + "System.Runtime.Numerics": "4.3.0-preview1-24530-04", + "System.Text.RegularExpressions": "4.3.0-preview1-24530-04", + "System.Threading": "4.3.0-preview1-24530-04", + "System.Threading.Tasks": "4.3.0-preview1-24530-04", + "System.Threading.Tasks.Parallel": "4.3.0-preview1-24530-04", + "System.Diagnostics.Process": "4.3.0-preview1-24530-04", + "System.Xml.XmlDocument": "4.3.0-preview1-24530-04", + "System.Xml.XPath": "4.3.0-preview1-24530-04", + "System.Xml.XPath.XmlDocument": "4.3.0-preview1-24530-04", + "xunit": "2.1.0", + "xunit.console.netcore": "1.0.2-prerelease-00101", + "xunit.runner.utility": "2.1.0" + }, + "frameworks": { + "netstandard1.4": { + "imports": [ + "dnxcore50", + "portable-net45+win8" + ] + } + } +} From dd0f4525224ba2fd992a2f74104897a23c4002f7 Mon Sep 17 00:00:00 2001 From: Drew Scoggins Date: Tue, 25 Oct 2016 16:58:31 -0700 Subject: [PATCH 3/4] Update performance tests Add inner iterations to all performance tests in the perflab directory. This is because we were measuring a time that was to small, and the results were not useful. This should also reduce the number of high level iterations we run as well. --- .../src/performance/perflab/BlockCopyPerf.cs | 5 +- tests/src/performance/perflab/CastingPerf.cs | 122 +++-- tests/src/performance/perflab/CastingPerf2.cs | 77 +-- tests/src/performance/perflab/DelegatePerf.cs | 35 +- tests/src/performance/perflab/EnumPerf.cs | 20 +- tests/src/performance/perflab/LowLevelPerf.cs | 216 ++++---- .../src/performance/perflab/ReflectionPerf.cs | 510 +++++++++--------- tests/src/performance/perflab/StackWalk.cs | 5 +- .../src/performance/perflab/ThreadingPerf.cs | 30 +- 9 files changed, 571 insertions(+), 449 deletions(-) diff --git a/tests/src/performance/perflab/BlockCopyPerf.cs b/tests/src/performance/perflab/BlockCopyPerf.cs index 526598345e4c..076d4365586e 100644 --- a/tests/src/performance/perflab/BlockCopyPerf.cs +++ b/tests/src/performance/perflab/BlockCopyPerf.cs @@ -7,7 +7,7 @@ public class BlockCopyPerf { - [Benchmark] + [Benchmark(InnerIterationCount=1000000)] [InlineData(0)] [InlineData(10)] [InlineData(100)] @@ -19,6 +19,7 @@ public static void CallBlockCopy(int numElements) foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - Buffer.BlockCopy(bytes, 0, bytes, numElements, numElements); + for(int i=0; i>(); foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - res = obj is IMyInterface1; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + res = obj is IMyInterface1; return res; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static bool CheckIsInstAnyIsInterfaceNo() { bool res = false; Object obj = new MyClass4>(); foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - res = obj is IMyInterface2; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + res = obj is IMyInterface2; return res; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static bool CheckArrayIsInterfaceYes() { bool res = false; Object[] arr = new MyClass1[5]; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - res = arr is IMyInterface1[]; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + res = arr is IMyInterface1[]; return res; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static bool CheckArrayIsInterfaceNo() { bool res = false; Object[] arr = new MyClass2[5]; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - res = arr is IMyInterface1[]; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + res = arr is IMyInterface1[]; return res; } } diff --git a/tests/src/performance/perflab/CastingPerf2.cs b/tests/src/performance/perflab/CastingPerf2.cs index b2cc448b7f24..1f874a56c368 100644 --- a/tests/src/performance/perflab/CastingPerf2.cs +++ b/tests/src/performance/perflab/CastingPerf2.cs @@ -95,143 +95,158 @@ public class CastingPerf public static IFoo ifo, ifo1, ifo2, ifo3, ifo4, ifo5, ifo6, ifo7, ifo8, ifo9; public static IFoo_5 if_0, if_1, if_2, if_3, if_4, if_5, if_6, if_7, if_8, if_9; - [Benchmark] + [Benchmark(InnerIterationCount=200000)] public static void ObjFooIsObj() { foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - o = foo; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + o = foo; } - [Benchmark] + [Benchmark(InnerIterationCount=200000)] public static void FooObjIsFoo() { o = foo; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - f = (Foo)o; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + f = (Foo)o; } - [Benchmark] + [Benchmark(InnerIterationCount=200000)] public static void FooObjIsNull() { foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - o = (Foo)n; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + o = (Foo)n; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void FooObjIsDescendant() { o = foo_5; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - f = (Foo)o; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + f = (Foo)o; } - [Benchmark] + [Benchmark(InnerIterationCount=200000)] public static void IFooFooIsIFoo() { foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - ifo = foo; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + ifo = foo; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void IFooObjIsIFoo() { o = foo; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - ifo = (IFoo)o; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + ifo = (IFoo)o; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void IFooObjIsIFooInterAlia() { o = foo2; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - if_0 = (IFoo_5)o; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + if_0 = (IFoo_5)o; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void IFooObjIsDescendantOfIFoo() { o = foo_5; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - ifo = (IFoo)o; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + ifo = (IFoo)o; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void ObjInt() { foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - o = (Object)j; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + o = (Object)j; } - [Benchmark] + [Benchmark(InnerIterationCount=200000)] public static void IntObj() { o = (Object)1; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - j = (int)o; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + j = (int)o; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void ObjScalarValueType() { foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - o = svt; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + o = svt; } - [Benchmark] + [Benchmark(InnerIterationCount=300000)] public static void ScalarValueTypeObj() { o = svt; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - svt = (FooSVT)o; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + svt = (FooSVT)o; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void ObjObjrefValueType() { foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - o = (Object)orvt; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + o = (Object)orvt; } - [Benchmark] + [Benchmark(InnerIterationCount=200000)] public static void ObjrefValueTypeObj() { o = (Object)orvt; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - orvt = (FooORVT)o; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + orvt = (FooORVT)o; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void FooObjCastIfIsa() { o = foo; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - if (o is Foo) - f = (Foo)o; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + if (o is Foo) + f = (Foo)o; } } } \ No newline at end of file diff --git a/tests/src/performance/perflab/DelegatePerf.cs b/tests/src/performance/perflab/DelegatePerf.cs index 667a352f0914..abc311a4455c 100644 --- a/tests/src/performance/perflab/DelegatePerf.cs +++ b/tests/src/performance/perflab/DelegatePerf.cs @@ -12,7 +12,7 @@ public class DelegatePerf { - [Benchmark] + [Benchmark(InnerIterationCount=200000)] public void DelegateInvoke() { DelegateLong dl = new DelegateLong(this.Invocable1); @@ -22,10 +22,11 @@ public void DelegateInvoke() foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - ret = dl(obj, 100, 100); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + ret = dl(obj, 100, 100); } - [Benchmark] + [Benchmark(InnerIterationCount=1000)] public void MulticastDelegateCombineInvoke() { MultiDelegate md = null; @@ -46,23 +47,26 @@ public void MulticastDelegateCombineInvoke() using (iteration.StartMeasurement()) { - md = (MultiDelegate)Delegate.Combine(md1, md); - md = (MultiDelegate)Delegate.Combine(md2, md); - md = (MultiDelegate)Delegate.Combine(md3, md); - md = (MultiDelegate)Delegate.Combine(md4, md); - md = (MultiDelegate)Delegate.Combine(md5, md); - md = (MultiDelegate)Delegate.Combine(md6, md); - md = (MultiDelegate)Delegate.Combine(md7, md); - md = (MultiDelegate)Delegate.Combine(md8, md); - md = (MultiDelegate)Delegate.Combine(md9, md); - md = (MultiDelegate)Delegate.Combine(md10, md); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + { + md = (MultiDelegate)Delegate.Combine(md1, md); + md = (MultiDelegate)Delegate.Combine(md2, md); + md = (MultiDelegate)Delegate.Combine(md3, md); + md = (MultiDelegate)Delegate.Combine(md4, md); + md = (MultiDelegate)Delegate.Combine(md5, md); + md = (MultiDelegate)Delegate.Combine(md6, md); + md = (MultiDelegate)Delegate.Combine(md7, md); + md = (MultiDelegate)Delegate.Combine(md8, md); + md = (MultiDelegate)Delegate.Combine(md9, md); + md = (MultiDelegate)Delegate.Combine(md10, md); + } } } md(obj, 100, 100); } - [Benchmark] + [Benchmark(InnerIterationCount=10000)] [InlineData(100)] [InlineData(1000)] public void MulticastDelegateInvoke(int length) @@ -75,7 +79,8 @@ public void MulticastDelegateInvoke(int length) foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - md(obj, 100, 100); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + md(obj, 100, 100); } internal virtual long Invocable1(Object obj, long x, long y) diff --git a/tests/src/performance/perflab/EnumPerf.cs b/tests/src/performance/perflab/EnumPerf.cs index 9e435721f938..bf8d89b476c1 100644 --- a/tests/src/performance/perflab/EnumPerf.cs +++ b/tests/src/performance/perflab/EnumPerf.cs @@ -19,7 +19,7 @@ public enum Color public class EnumPerf { - [Benchmark] + [Benchmark(InnerIterationCount=300000)] [InlineData(Color.Red)] public static void EnumCompareTo(Color color) { @@ -27,10 +27,11 @@ public static void EnumCompareTo(Color color) foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - color.CompareTo(white); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + color.CompareTo(white); } - [Benchmark] + [Benchmark(InnerIterationCount=300000)] public static Type ObjectGetType() { Type tmp = null; @@ -38,12 +39,13 @@ public static Type ObjectGetType() foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - tmp = black.GetType(); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + tmp = black.GetType(); return tmp; } - [Benchmark] + [Benchmark(InnerIterationCount=300000)] public static Type ObjectGetTypeNoBoxing() { Type tmp = null; @@ -51,12 +53,13 @@ public static Type ObjectGetTypeNoBoxing() foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - tmp = black.GetType(); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + tmp = black.GetType(); return tmp; } - [Benchmark] + [Benchmark(InnerIterationCount=300000)] public static bool EnumEquals() { Color black = Color.Black; @@ -65,7 +68,8 @@ public static bool EnumEquals() foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - tmp = black.Equals(white); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + tmp = black.Equals(white); return tmp; } diff --git a/tests/src/performance/perflab/LowLevelPerf.cs b/tests/src/performance/perflab/LowLevelPerf.cs index 76b3794fe6a4..30c6734d456e 100644 --- a/tests/src/performance/perflab/LowLevelPerf.cs +++ b/tests/src/performance/perflab/LowLevelPerf.cs @@ -9,49 +9,55 @@ public class LowLevelPerf { - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void EmptyStaticFunction() { foreach (var iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) { - Class.EmptyStaticFunction(); - Class.EmptyStaticFunction(); - Class.EmptyStaticFunction(); - Class.EmptyStaticFunction(); - Class.EmptyStaticFunction(); - Class.EmptyStaticFunction(); - Class.EmptyStaticFunction(); - Class.EmptyStaticFunction(); - Class.EmptyStaticFunction(); - Class.EmptyStaticFunction(); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + { + Class.EmptyStaticFunction(); + Class.EmptyStaticFunction(); + Class.EmptyStaticFunction(); + Class.EmptyStaticFunction(); + Class.EmptyStaticFunction(); + Class.EmptyStaticFunction(); + Class.EmptyStaticFunction(); + Class.EmptyStaticFunction(); + Class.EmptyStaticFunction(); + Class.EmptyStaticFunction(); + } } } } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void EmptyStaticFunction5Arg() { foreach (var iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) { - Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); - Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); - Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); - Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); - Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); - Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); - Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); - Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); - Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); - Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + { + Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); + Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); + Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); + Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); + Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); + Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); + Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); + Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); + Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); + Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5); + } } } } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void EmptyInstanceFunction() { Class aClass = new Class(); @@ -60,21 +66,24 @@ public static void EmptyInstanceFunction() { using (iteration.StartMeasurement()) { - aClass.EmptyInstanceFunction(); - aClass.EmptyInstanceFunction(); - aClass.EmptyInstanceFunction(); - aClass.EmptyInstanceFunction(); - aClass.EmptyInstanceFunction(); - aClass.EmptyInstanceFunction(); - aClass.EmptyInstanceFunction(); - aClass.EmptyInstanceFunction(); - aClass.EmptyInstanceFunction(); - aClass.EmptyInstanceFunction(); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + { + aClass.EmptyInstanceFunction(); + aClass.EmptyInstanceFunction(); + aClass.EmptyInstanceFunction(); + aClass.EmptyInstanceFunction(); + aClass.EmptyInstanceFunction(); + aClass.EmptyInstanceFunction(); + aClass.EmptyInstanceFunction(); + aClass.EmptyInstanceFunction(); + aClass.EmptyInstanceFunction(); + aClass.EmptyInstanceFunction(); + } } } } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void InterfaceInterfaceMethod() { AnInterface aInterface = new Class(); @@ -83,16 +92,19 @@ public static void InterfaceInterfaceMethod() { using (iteration.StartMeasurement()) { - CallInterfaceMethod(aInterface); - CallInterfaceMethod(aInterface); - CallInterfaceMethod(aInterface); - CallInterfaceMethod(aInterface); - CallInterfaceMethod(aInterface); - CallInterfaceMethod(aInterface); - CallInterfaceMethod(aInterface); - CallInterfaceMethod(aInterface); - CallInterfaceMethod(aInterface); - CallInterfaceMethod(aInterface); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + { + CallInterfaceMethod(aInterface); + CallInterfaceMethod(aInterface); + CallInterfaceMethod(aInterface); + CallInterfaceMethod(aInterface); + CallInterfaceMethod(aInterface); + CallInterfaceMethod(aInterface); + CallInterfaceMethod(aInterface); + CallInterfaceMethod(aInterface); + CallInterfaceMethod(aInterface); + CallInterfaceMethod(aInterface); + } } } } @@ -103,7 +115,7 @@ private static void CallInterfaceMethod(AnInterface aInterface) aInterface.InterfaceMethod(); } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void InterfaceInterfaceMethodLongHierarchy() { AnInterface aInterface = new LongHierarchyChildClass(); @@ -123,10 +135,11 @@ public static void InterfaceInterfaceMethodLongHierarchy() foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - CallInterfaceMethod(aInterface); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + CallInterfaceMethod(aInterface); } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void InterfaceInterfaceMethodSwitchCallType() { AnInterface aInterface = new LongHierarchyChildClass(); @@ -136,13 +149,16 @@ public static void InterfaceInterfaceMethodSwitchCallType() { using (iteration.StartMeasurement()) { - CallInterfaceMethod(aInterface); - CallInterfaceMethod(aInterface1); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + { + CallInterfaceMethod(aInterface); + CallInterfaceMethod(aInterface1); + } } } } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static int ClassVirtualMethod() { SuperClass aClass = new Class(); @@ -150,42 +166,46 @@ public static int ClassVirtualMethod() int x = 0; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - x = aClass.VirtualMethod(); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + x = aClass.VirtualMethod(); return x; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void SealedClassInterfaceMethod() { SealedClass aSealedClass = new SealedClass(); foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - aSealedClass.InterfaceMethod(); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + aSealedClass.InterfaceMethod(); } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void StructWithInterfaceInterfaceMethod() { StructWithInterface aStructWithInterface = new StructWithInterface(); foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - aStructWithInterface.InterfaceMethod(); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + aStructWithInterface.InterfaceMethod(); } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void StaticIntPlus() { Class aClass = new Class(); foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - Class.aStaticInt += 1; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + Class.aStaticInt += 1; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static bool ObjectStringIsString() { object aObjectString = "aString1"; @@ -193,12 +213,13 @@ public static bool ObjectStringIsString() foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - b = aObjectString is String; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + b = aObjectString is String; return b; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void NewDelegateClassEmptyInstanceFn() { Class aClass = new Class(); @@ -206,10 +227,11 @@ public static void NewDelegateClassEmptyInstanceFn() foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - aMyDelegate = new MyDelegate(aClass.EmptyInstanceFunction); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + aMyDelegate = new MyDelegate(aClass.EmptyInstanceFunction); } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void NewDelegateClassEmptyStaticFn() { Class aClass = new Class(); @@ -217,10 +239,11 @@ public static void NewDelegateClassEmptyStaticFn() foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - aMyDelegate = new MyDelegate(Class.EmptyStaticFunction); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + aMyDelegate = new MyDelegate(Class.EmptyStaticFunction); } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void InstanceDelegate() { Class aClass = new Class(); @@ -228,10 +251,11 @@ public static void InstanceDelegate() foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - aInstanceDelegate(); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + aInstanceDelegate(); } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void StaticDelegate() { Class aClass = new Class(); @@ -239,10 +263,11 @@ public static void StaticDelegate() foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - aStaticDelegate(); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + aStaticDelegate(); } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void MeasureEvents() { Class aClass = new Class(); @@ -250,28 +275,31 @@ public static void MeasureEvents() foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - aClass.MeasureFire100(); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + aClass.MeasureFire100(); } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void GenericClassWithIntGenericInstanceField() { GenericClass aGenericClassWithInt = new GenericClass(); foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - aGenericClassWithInt.aGenericInstanceFieldT = 1; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + aGenericClassWithInt.aGenericInstanceFieldT = 1; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void GenericClassGenericStaticField() { foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - GenericClass.aGenericStaticFieldT = 1; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + GenericClass.aGenericStaticFieldT = 1; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static int GenericClassGenericInstanceMethod() { GenericClass aGenericClassWithInt = new GenericClass(); @@ -279,35 +307,38 @@ public static int GenericClassGenericInstanceMethod() int x = 0; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - x = aGenericClassWithInt.ClassGenericInstanceMethod(); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + x = aGenericClassWithInt.ClassGenericInstanceMethod(); return x; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static int GenericClassGenericStaticMethod() { int x = 0; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - x = GenericClass.ClassGenericStaticMethod(); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + x = GenericClass.ClassGenericStaticMethod(); return x; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static int GenericGenericMethod() { // Warmup int x = 0; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - x = Class.GenericMethod(); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + x = Class.GenericMethod(); return x; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void GenericClassWithSTringGenericInstanceMethod() { GenericClass aGenericClassWithString = new GenericClass(); @@ -315,10 +346,11 @@ public static void GenericClassWithSTringGenericInstanceMethod() foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - aGenericClassWithString.aGenericInstanceFieldT = aString; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + aGenericClassWithString.aGenericInstanceFieldT = aString; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static int ForeachOverList100Elements() { List iList = new List(); @@ -328,13 +360,14 @@ public static int ForeachOverList100Elements() int iResult = 0; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - foreach (int i in iList) - iResult = i; + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + foreach (int j in iList) + iResult = j; return iResult; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static Type TypeReflectionObjectGetType() { Type type = null; @@ -342,12 +375,13 @@ public static Type TypeReflectionObjectGetType() foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - type = anObject.GetType(); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + type = anObject.GetType(); return type; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static Type TypeReflectionArrayGetType() { Type type = null; @@ -355,12 +389,13 @@ public static Type TypeReflectionArrayGetType() foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - type = anArray.GetType(); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + type = anArray.GetType(); return type; } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static string IntegerFormatting() { int number = Int32.MaxValue; @@ -368,7 +403,8 @@ public static string IntegerFormatting() string result = null; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - result = number.ToString(); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + result = number.ToString(); return result; } diff --git a/tests/src/performance/perflab/ReflectionPerf.cs b/tests/src/performance/perflab/ReflectionPerf.cs index a4b1086dacc6..954bbe7e9262 100644 --- a/tests/src/performance/perflab/ReflectionPerf.cs +++ b/tests/src/performance/perflab/ReflectionPerf.cs @@ -56,345 +56,375 @@ static GetMember() s_t20 = typeof(Class20).GetTypeInfo(); } - [Benchmark] + [Benchmark(InnerIterationCount=1000)] public static void GetField() { foreach (var iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) { - s_t1.GetDeclaredField("f1"); - s_t1.GetDeclaredField("f2"); - s_t1.GetDeclaredField("f3"); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + { + s_t1.GetDeclaredField("f1"); + s_t1.GetDeclaredField("f2"); + s_t1.GetDeclaredField("f3"); + } } } } - [Benchmark] + [Benchmark(InnerIterationCount=1000)] public static void GetMethod1() { foreach (var iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) { - s_t1.GetDeclaredMethod("m1"); - s_t1.GetDeclaredMethod("m2"); - s_t1.GetDeclaredMethod("m3"); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + { + s_t1.GetDeclaredMethod("m1"); + s_t1.GetDeclaredMethod("m2"); + s_t1.GetDeclaredMethod("m3"); + } } } } - [Benchmark] + [Benchmark(InnerIterationCount=1000)] public static void GetMethod2() { foreach (var iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) { - s_t1.GetDeclaredMethod("m1"); - s_t1.GetDeclaredMethod("m2"); - s_t1.GetDeclaredMethod("m3"); - s_t2.GetDeclaredMethod("m1"); - s_t2.GetDeclaredMethod("m2"); - s_t2.GetDeclaredMethod("m3"); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + { + s_t1.GetDeclaredMethod("m1"); + s_t1.GetDeclaredMethod("m2"); + s_t1.GetDeclaredMethod("m3"); + s_t2.GetDeclaredMethod("m1"); + s_t2.GetDeclaredMethod("m2"); + s_t2.GetDeclaredMethod("m3"); + } } } } - [Benchmark] + [Benchmark(InnerIterationCount=1000)] public static void GetMethod3() { foreach (var iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) { - s_t1.GetDeclaredMethod("m1"); - s_t1.GetDeclaredMethod("m2"); //TODO: check if we can really get the method - s_t1.GetDeclaredMethod("m3"); - s_t2.GetDeclaredMethod("m1"); - s_t2.GetDeclaredMethod("m2"); - s_t2.GetDeclaredMethod("m3"); - s_t3.GetDeclaredMethod("m1"); - s_t3.GetDeclaredMethod("m2"); - s_t3.GetDeclaredMethod("m3"); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + { + s_t1.GetDeclaredMethod("m1"); + s_t1.GetDeclaredMethod("m2"); //TODO: check if we can really get the method + s_t1.GetDeclaredMethod("m3"); + s_t2.GetDeclaredMethod("m1"); + s_t2.GetDeclaredMethod("m2"); + s_t2.GetDeclaredMethod("m3"); + s_t3.GetDeclaredMethod("m1"); + s_t3.GetDeclaredMethod("m2"); + s_t3.GetDeclaredMethod("m3"); + } } } } - [Benchmark] + [Benchmark(InnerIterationCount=1000)] public static void GetMethod4() { foreach (var iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) { - s_t1.GetDeclaredMethod("m1"); - s_t1.GetDeclaredMethod("m2"); //TODO: check if we can really get the method - s_t1.GetDeclaredMethod("m3"); - s_t2.GetDeclaredMethod("m1"); - s_t2.GetDeclaredMethod("m2"); - s_t2.GetDeclaredMethod("m3"); - s_t3.GetDeclaredMethod("m1"); - s_t3.GetDeclaredMethod("m2"); - s_t3.GetDeclaredMethod("m3"); - s_t4.GetDeclaredMethod("m1"); - s_t4.GetDeclaredMethod("m2"); - s_t4.GetDeclaredMethod("m3"); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + { + s_t1.GetDeclaredMethod("m1"); + s_t1.GetDeclaredMethod("m2"); //TODO: check if we can really get the method + s_t1.GetDeclaredMethod("m3"); + s_t2.GetDeclaredMethod("m1"); + s_t2.GetDeclaredMethod("m2"); + s_t2.GetDeclaredMethod("m3"); + s_t3.GetDeclaredMethod("m1"); + s_t3.GetDeclaredMethod("m2"); + s_t3.GetDeclaredMethod("m3"); + s_t4.GetDeclaredMethod("m1"); + s_t4.GetDeclaredMethod("m2"); + s_t4.GetDeclaredMethod("m3"); + } } } } - [Benchmark] + [Benchmark(InnerIterationCount=1000)] public static void GetMethod5() { foreach (var iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) { - s_t1.GetDeclaredMethod("m1"); - s_t1.GetDeclaredMethod("m2"); - s_t1.GetDeclaredMethod("m3"); - s_t2.GetDeclaredMethod("m1"); - s_t2.GetDeclaredMethod("m2"); - s_t2.GetDeclaredMethod("m3"); - s_t3.GetDeclaredMethod("m1"); - s_t3.GetDeclaredMethod("m2"); - s_t3.GetDeclaredMethod("m3"); - s_t4.GetDeclaredMethod("m1"); - s_t4.GetDeclaredMethod("m2"); - s_t4.GetDeclaredMethod("m3"); - s_t5.GetDeclaredMethod("m1"); - s_t5.GetDeclaredMethod("m2"); - s_t5.GetDeclaredMethod("m3"); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + { + s_t1.GetDeclaredMethod("m1"); + s_t1.GetDeclaredMethod("m2"); + s_t1.GetDeclaredMethod("m3"); + s_t2.GetDeclaredMethod("m1"); + s_t2.GetDeclaredMethod("m2"); + s_t2.GetDeclaredMethod("m3"); + s_t3.GetDeclaredMethod("m1"); + s_t3.GetDeclaredMethod("m2"); + s_t3.GetDeclaredMethod("m3"); + s_t4.GetDeclaredMethod("m1"); + s_t4.GetDeclaredMethod("m2"); + s_t4.GetDeclaredMethod("m3"); + s_t5.GetDeclaredMethod("m1"); + s_t5.GetDeclaredMethod("m2"); + s_t5.GetDeclaredMethod("m3"); + } } } } - [Benchmark] + [Benchmark(InnerIterationCount=1000)] public static void GetMethod10() { foreach (var iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) { - s_t1.GetDeclaredMethod("m1"); - s_t1.GetDeclaredMethod("m2"); - s_t1.GetDeclaredMethod("m3"); - s_t2.GetDeclaredMethod("m1"); - s_t2.GetDeclaredMethod("m2"); - s_t2.GetDeclaredMethod("m3"); - s_t3.GetDeclaredMethod("m1"); - s_t3.GetDeclaredMethod("m2"); - s_t3.GetDeclaredMethod("m3"); - s_t4.GetDeclaredMethod("m1"); - s_t4.GetDeclaredMethod("m2"); - s_t4.GetDeclaredMethod("m3"); - s_t5.GetDeclaredMethod("m1"); - s_t5.GetDeclaredMethod("m2"); - s_t5.GetDeclaredMethod("m3"); - - s_t6.GetDeclaredMethod("m1"); - s_t6.GetDeclaredMethod("m2"); - s_t6.GetDeclaredMethod("m3"); - s_t7.GetDeclaredMethod("m1"); - s_t7.GetDeclaredMethod("m2"); - s_t7.GetDeclaredMethod("m3"); - s_t8.GetDeclaredMethod("m1"); - s_t8.GetDeclaredMethod("m2"); - s_t8.GetDeclaredMethod("m3"); - s_t9.GetDeclaredMethod("m1"); - s_t9.GetDeclaredMethod("m2"); - s_t9.GetDeclaredMethod("m3"); - s_t10.GetDeclaredMethod("m1"); - s_t10.GetDeclaredMethod("m2"); - s_t10.GetDeclaredMethod("m3"); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + { + s_t1.GetDeclaredMethod("m1"); + s_t1.GetDeclaredMethod("m2"); + s_t1.GetDeclaredMethod("m3"); + s_t2.GetDeclaredMethod("m1"); + s_t2.GetDeclaredMethod("m2"); + s_t2.GetDeclaredMethod("m3"); + s_t3.GetDeclaredMethod("m1"); + s_t3.GetDeclaredMethod("m2"); + s_t3.GetDeclaredMethod("m3"); + s_t4.GetDeclaredMethod("m1"); + s_t4.GetDeclaredMethod("m2"); + s_t4.GetDeclaredMethod("m3"); + s_t5.GetDeclaredMethod("m1"); + s_t5.GetDeclaredMethod("m2"); + s_t5.GetDeclaredMethod("m3"); + + s_t6.GetDeclaredMethod("m1"); + s_t6.GetDeclaredMethod("m2"); + s_t6.GetDeclaredMethod("m3"); + s_t7.GetDeclaredMethod("m1"); + s_t7.GetDeclaredMethod("m2"); + s_t7.GetDeclaredMethod("m3"); + s_t8.GetDeclaredMethod("m1"); + s_t8.GetDeclaredMethod("m2"); + s_t8.GetDeclaredMethod("m3"); + s_t9.GetDeclaredMethod("m1"); + s_t9.GetDeclaredMethod("m2"); + s_t9.GetDeclaredMethod("m3"); + s_t10.GetDeclaredMethod("m1"); + s_t10.GetDeclaredMethod("m2"); + s_t10.GetDeclaredMethod("m3"); + } } } } - [Benchmark] + [Benchmark(InnerIterationCount=1000)] public static void GetMethod12() { foreach (var iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) { - s_t1.GetDeclaredMethod("m1"); - s_t1.GetDeclaredMethod("m2"); - s_t1.GetDeclaredMethod("m3"); - s_t2.GetDeclaredMethod("m1"); - s_t2.GetDeclaredMethod("m2"); - s_t2.GetDeclaredMethod("m3"); - s_t3.GetDeclaredMethod("m1"); - s_t3.GetDeclaredMethod("m2"); - s_t3.GetDeclaredMethod("m3"); - s_t4.GetDeclaredMethod("m1"); - s_t4.GetDeclaredMethod("m2"); - s_t4.GetDeclaredMethod("m3"); - s_t5.GetDeclaredMethod("m1"); - s_t5.GetDeclaredMethod("m2"); - s_t5.GetDeclaredMethod("m3"); - - s_t6.GetDeclaredMethod("m1"); - s_t6.GetDeclaredMethod("m2"); - s_t6.GetDeclaredMethod("m3"); - s_t7.GetDeclaredMethod("m1"); - s_t7.GetDeclaredMethod("m2"); - s_t7.GetDeclaredMethod("m3"); - s_t8.GetDeclaredMethod("m1"); - s_t8.GetDeclaredMethod("m2"); - s_t8.GetDeclaredMethod("m3"); - s_t9.GetDeclaredMethod("m1"); - s_t9.GetDeclaredMethod("m2"); - s_t9.GetDeclaredMethod("m3"); - s_t10.GetDeclaredMethod("m1"); - s_t10.GetDeclaredMethod("m2"); - s_t10.GetDeclaredMethod("m3"); - - s_t11.GetDeclaredMethod("m1"); - s_t11.GetDeclaredMethod("m2"); - s_t11.GetDeclaredMethod("m3"); - s_t12.GetDeclaredMethod("m1"); - s_t12.GetDeclaredMethod("m2"); - s_t12.GetDeclaredMethod("m3"); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + { + s_t1.GetDeclaredMethod("m1"); + s_t1.GetDeclaredMethod("m2"); + s_t1.GetDeclaredMethod("m3"); + s_t2.GetDeclaredMethod("m1"); + s_t2.GetDeclaredMethod("m2"); + s_t2.GetDeclaredMethod("m3"); + s_t3.GetDeclaredMethod("m1"); + s_t3.GetDeclaredMethod("m2"); + s_t3.GetDeclaredMethod("m3"); + s_t4.GetDeclaredMethod("m1"); + s_t4.GetDeclaredMethod("m2"); + s_t4.GetDeclaredMethod("m3"); + s_t5.GetDeclaredMethod("m1"); + s_t5.GetDeclaredMethod("m2"); + s_t5.GetDeclaredMethod("m3"); + + s_t6.GetDeclaredMethod("m1"); + s_t6.GetDeclaredMethod("m2"); + s_t6.GetDeclaredMethod("m3"); + s_t7.GetDeclaredMethod("m1"); + s_t7.GetDeclaredMethod("m2"); + s_t7.GetDeclaredMethod("m3"); + s_t8.GetDeclaredMethod("m1"); + s_t8.GetDeclaredMethod("m2"); + s_t8.GetDeclaredMethod("m3"); + s_t9.GetDeclaredMethod("m1"); + s_t9.GetDeclaredMethod("m2"); + s_t9.GetDeclaredMethod("m3"); + s_t10.GetDeclaredMethod("m1"); + s_t10.GetDeclaredMethod("m2"); + s_t10.GetDeclaredMethod("m3"); + + s_t11.GetDeclaredMethod("m1"); + s_t11.GetDeclaredMethod("m2"); + s_t11.GetDeclaredMethod("m3"); + s_t12.GetDeclaredMethod("m1"); + s_t12.GetDeclaredMethod("m2"); + s_t12.GetDeclaredMethod("m3"); + } } } } - [Benchmark] + [Benchmark(InnerIterationCount=1000)] public static void GetMethod15() { foreach (var iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) { - s_t1.GetDeclaredMethod("m1"); - s_t1.GetDeclaredMethod("m2"); - s_t1.GetDeclaredMethod("m3"); - s_t2.GetDeclaredMethod("m1"); - s_t2.GetDeclaredMethod("m2"); - s_t2.GetDeclaredMethod("m3"); - s_t3.GetDeclaredMethod("m1"); - s_t3.GetDeclaredMethod("m2"); - s_t3.GetDeclaredMethod("m3"); - s_t4.GetDeclaredMethod("m1"); - s_t4.GetDeclaredMethod("m2"); - s_t4.GetDeclaredMethod("m3"); - s_t5.GetDeclaredMethod("m1"); - s_t5.GetDeclaredMethod("m2"); - s_t5.GetDeclaredMethod("m3"); - - s_t6.GetDeclaredMethod("m1"); - s_t6.GetDeclaredMethod("m2"); - s_t6.GetDeclaredMethod("m3"); - s_t7.GetDeclaredMethod("m1"); - s_t7.GetDeclaredMethod("m2"); - s_t7.GetDeclaredMethod("m3"); - s_t8.GetDeclaredMethod("m1"); - s_t8.GetDeclaredMethod("m2"); - s_t8.GetDeclaredMethod("m3"); - s_t9.GetDeclaredMethod("m1"); - s_t9.GetDeclaredMethod("m2"); - s_t9.GetDeclaredMethod("m3"); - s_t10.GetDeclaredMethod("m1"); - s_t10.GetDeclaredMethod("m2"); - s_t10.GetDeclaredMethod("m3"); - - s_t11.GetDeclaredMethod("m1"); - s_t11.GetDeclaredMethod("m2"); - s_t11.GetDeclaredMethod("m3"); - s_t12.GetDeclaredMethod("m1"); - s_t12.GetDeclaredMethod("m2"); - s_t12.GetDeclaredMethod("m3"); - s_t13.GetDeclaredMethod("m1"); - s_t13.GetDeclaredMethod("m2"); - s_t13.GetDeclaredMethod("m3"); - s_t14.GetDeclaredMethod("m1"); - s_t14.GetDeclaredMethod("m2"); - s_t14.GetDeclaredMethod("m3"); - s_t15.GetDeclaredMethod("m1"); - s_t15.GetDeclaredMethod("m2"); - s_t15.GetDeclaredMethod("m3"); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + { + s_t1.GetDeclaredMethod("m1"); + s_t1.GetDeclaredMethod("m2"); + s_t1.GetDeclaredMethod("m3"); + s_t2.GetDeclaredMethod("m1"); + s_t2.GetDeclaredMethod("m2"); + s_t2.GetDeclaredMethod("m3"); + s_t3.GetDeclaredMethod("m1"); + s_t3.GetDeclaredMethod("m2"); + s_t3.GetDeclaredMethod("m3"); + s_t4.GetDeclaredMethod("m1"); + s_t4.GetDeclaredMethod("m2"); + s_t4.GetDeclaredMethod("m3"); + s_t5.GetDeclaredMethod("m1"); + s_t5.GetDeclaredMethod("m2"); + s_t5.GetDeclaredMethod("m3"); + + s_t6.GetDeclaredMethod("m1"); + s_t6.GetDeclaredMethod("m2"); + s_t6.GetDeclaredMethod("m3"); + s_t7.GetDeclaredMethod("m1"); + s_t7.GetDeclaredMethod("m2"); + s_t7.GetDeclaredMethod("m3"); + s_t8.GetDeclaredMethod("m1"); + s_t8.GetDeclaredMethod("m2"); + s_t8.GetDeclaredMethod("m3"); + s_t9.GetDeclaredMethod("m1"); + s_t9.GetDeclaredMethod("m2"); + s_t9.GetDeclaredMethod("m3"); + s_t10.GetDeclaredMethod("m1"); + s_t10.GetDeclaredMethod("m2"); + s_t10.GetDeclaredMethod("m3"); + + s_t11.GetDeclaredMethod("m1"); + s_t11.GetDeclaredMethod("m2"); + s_t11.GetDeclaredMethod("m3"); + s_t12.GetDeclaredMethod("m1"); + s_t12.GetDeclaredMethod("m2"); + s_t12.GetDeclaredMethod("m3"); + s_t13.GetDeclaredMethod("m1"); + s_t13.GetDeclaredMethod("m2"); + s_t13.GetDeclaredMethod("m3"); + s_t14.GetDeclaredMethod("m1"); + s_t14.GetDeclaredMethod("m2"); + s_t14.GetDeclaredMethod("m3"); + s_t15.GetDeclaredMethod("m1"); + s_t15.GetDeclaredMethod("m2"); + s_t15.GetDeclaredMethod("m3"); + } } } } - [Benchmark] + [Benchmark(InnerIterationCount=1000)] public static void GetMethod20() { foreach (var iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) { - s_t1.GetDeclaredMethod("m1"); - s_t1.GetDeclaredMethod("m2"); - s_t1.GetDeclaredMethod("m3"); - s_t2.GetDeclaredMethod("m1"); - s_t2.GetDeclaredMethod("m2"); - s_t2.GetDeclaredMethod("m3"); - s_t3.GetDeclaredMethod("m1"); - s_t3.GetDeclaredMethod("m2"); - s_t3.GetDeclaredMethod("m3"); - s_t4.GetDeclaredMethod("m1"); - s_t4.GetDeclaredMethod("m2"); - s_t4.GetDeclaredMethod("m3"); - s_t5.GetDeclaredMethod("m1"); - s_t5.GetDeclaredMethod("m2"); - s_t5.GetDeclaredMethod("m3"); - - s_t6.GetDeclaredMethod("m1"); - s_t6.GetDeclaredMethod("m2"); - s_t6.GetDeclaredMethod("m3"); - s_t7.GetDeclaredMethod("m1"); - s_t7.GetDeclaredMethod("m2"); - s_t7.GetDeclaredMethod("m3"); - s_t8.GetDeclaredMethod("m1"); - s_t8.GetDeclaredMethod("m2"); - s_t8.GetDeclaredMethod("m3"); - s_t9.GetDeclaredMethod("m1"); - s_t9.GetDeclaredMethod("m2"); - s_t9.GetDeclaredMethod("m3"); - s_t10.GetDeclaredMethod("m1"); - s_t10.GetDeclaredMethod("m2"); - s_t10.GetDeclaredMethod("m3"); - - s_t11.GetDeclaredMethod("m1"); - s_t11.GetDeclaredMethod("m2"); - s_t11.GetDeclaredMethod("m3"); - s_t12.GetDeclaredMethod("m1"); - s_t12.GetDeclaredMethod("m2"); - s_t12.GetDeclaredMethod("m3"); - s_t13.GetDeclaredMethod("m1"); - s_t13.GetDeclaredMethod("m2"); - s_t13.GetDeclaredMethod("m3"); - s_t14.GetDeclaredMethod("m1"); - s_t14.GetDeclaredMethod("m2"); - s_t14.GetDeclaredMethod("m3"); - s_t15.GetDeclaredMethod("m1"); - s_t15.GetDeclaredMethod("m2"); - s_t15.GetDeclaredMethod("m3"); - - s_t16.GetDeclaredMethod("m1"); - s_t16.GetDeclaredMethod("m2"); - s_t16.GetDeclaredMethod("m3"); - s_t17.GetDeclaredMethod("m1"); - s_t17.GetDeclaredMethod("m2"); - s_t17.GetDeclaredMethod("m3"); - s_t18.GetDeclaredMethod("m1"); - s_t18.GetDeclaredMethod("m2"); - s_t18.GetDeclaredMethod("m3"); - s_t19.GetDeclaredMethod("m1"); - s_t19.GetDeclaredMethod("m2"); - s_t19.GetDeclaredMethod("m3"); - s_t20.GetDeclaredMethod("m1"); - s_t20.GetDeclaredMethod("m2"); - s_t20.GetDeclaredMethod("m3"); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + { + s_t1.GetDeclaredMethod("m1"); + s_t1.GetDeclaredMethod("m2"); + s_t1.GetDeclaredMethod("m3"); + s_t2.GetDeclaredMethod("m1"); + s_t2.GetDeclaredMethod("m2"); + s_t2.GetDeclaredMethod("m3"); + s_t3.GetDeclaredMethod("m1"); + s_t3.GetDeclaredMethod("m2"); + s_t3.GetDeclaredMethod("m3"); + s_t4.GetDeclaredMethod("m1"); + s_t4.GetDeclaredMethod("m2"); + s_t4.GetDeclaredMethod("m3"); + s_t5.GetDeclaredMethod("m1"); + s_t5.GetDeclaredMethod("m2"); + s_t5.GetDeclaredMethod("m3"); + + s_t6.GetDeclaredMethod("m1"); + s_t6.GetDeclaredMethod("m2"); + s_t6.GetDeclaredMethod("m3"); + s_t7.GetDeclaredMethod("m1"); + s_t7.GetDeclaredMethod("m2"); + s_t7.GetDeclaredMethod("m3"); + s_t8.GetDeclaredMethod("m1"); + s_t8.GetDeclaredMethod("m2"); + s_t8.GetDeclaredMethod("m3"); + s_t9.GetDeclaredMethod("m1"); + s_t9.GetDeclaredMethod("m2"); + s_t9.GetDeclaredMethod("m3"); + s_t10.GetDeclaredMethod("m1"); + s_t10.GetDeclaredMethod("m2"); + s_t10.GetDeclaredMethod("m3"); + + s_t11.GetDeclaredMethod("m1"); + s_t11.GetDeclaredMethod("m2"); + s_t11.GetDeclaredMethod("m3"); + s_t12.GetDeclaredMethod("m1"); + s_t12.GetDeclaredMethod("m2"); + s_t12.GetDeclaredMethod("m3"); + s_t13.GetDeclaredMethod("m1"); + s_t13.GetDeclaredMethod("m2"); + s_t13.GetDeclaredMethod("m3"); + s_t14.GetDeclaredMethod("m1"); + s_t14.GetDeclaredMethod("m2"); + s_t14.GetDeclaredMethod("m3"); + s_t15.GetDeclaredMethod("m1"); + s_t15.GetDeclaredMethod("m2"); + s_t15.GetDeclaredMethod("m3"); + + s_t16.GetDeclaredMethod("m1"); + s_t16.GetDeclaredMethod("m2"); + s_t16.GetDeclaredMethod("m3"); + s_t17.GetDeclaredMethod("m1"); + s_t17.GetDeclaredMethod("m2"); + s_t17.GetDeclaredMethod("m3"); + s_t18.GetDeclaredMethod("m1"); + s_t18.GetDeclaredMethod("m2"); + s_t18.GetDeclaredMethod("m3"); + s_t19.GetDeclaredMethod("m1"); + s_t19.GetDeclaredMethod("m2"); + s_t19.GetDeclaredMethod("m3"); + s_t20.GetDeclaredMethod("m1"); + s_t20.GetDeclaredMethod("m2"); + s_t20.GetDeclaredMethod("m3"); + } } } } /* - [Benchmark] + [Benchmark(InnerIterationCount=1000)] public static void GetConstructor() { foreach (var iteration in Benchmark.Iterations) @@ -420,7 +450,7 @@ public static void GetConstructor() } } - [Benchmark] + [Benchmark(InnerIterationCount=1000)] public static void GetProperty() { foreach (var iteration in Benchmark.Iterations) @@ -458,7 +488,7 @@ public static void GetProperty() } } - [Benchmark] + [Benchmark(InnerIterationCount=1000)] public static void GetEvent() { foreach (var iteration in Benchmark.Iterations) diff --git a/tests/src/performance/perflab/StackWalk.cs b/tests/src/performance/perflab/StackWalk.cs index 5a9eb888116b..da36fd07ec9d 100644 --- a/tests/src/performance/perflab/StackWalk.cs +++ b/tests/src/performance/perflab/StackWalk.cs @@ -7,7 +7,7 @@ public static class StackWalk { - [Benchmark] + [Benchmark(InnerIterationCount=1000)] public static void Walk() { A(5); @@ -68,7 +68,8 @@ private static int Z(int a) { foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - GC.Collect(0); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + GC.Collect(0); return 55; } diff --git a/tests/src/performance/perflab/ThreadingPerf.cs b/tests/src/performance/perflab/ThreadingPerf.cs index f8f999fa6c8d..5cb16d49e188 100644 --- a/tests/src/performance/perflab/ThreadingPerf.cs +++ b/tests/src/performance/perflab/ThreadingPerf.cs @@ -10,59 +10,65 @@ public class JITIntrinsics private static int s_i; private static string s_s; - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void CompareExchangeIntNoMatch() { s_i = 0; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - Interlocked.CompareExchange(ref s_i, 5, -1); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + Interlocked.CompareExchange(ref s_i, 5, -1); } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void CompareExchangeIntMatch() { foreach (var iteration in Benchmark.Iterations) { s_i = 1; using (iteration.StartMeasurement()) - Interlocked.CompareExchange(ref s_i, 5, 1); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + Interlocked.CompareExchange(ref s_i, 5, 1); } } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void CompareExchangeObjNoMatch() { s_s = "Hello"; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - Interlocked.CompareExchange(ref s_s, "World", "What?"); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + Interlocked.CompareExchange(ref s_s, "World", "What?"); } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void CompareExchangeObjMatch() { foreach (var iteration in Benchmark.Iterations) { s_s = "What?"; using (iteration.StartMeasurement()) - Interlocked.CompareExchange(ref s_s, "World", "What?"); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + Interlocked.CompareExchange(ref s_s, "World", "What?"); } } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void InterlockedIncrement() { foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - Interlocked.Increment(ref s_i); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + Interlocked.Increment(ref s_i); } - [Benchmark] + [Benchmark(InnerIterationCount=100000)] public static void InterlockedDecrement() { foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) - Interlocked.Decrement(ref s_i); + for (int i = 0; i < Benchmark.InnerIterationCount; i++) + Interlocked.Decrement(ref s_i); } } \ No newline at end of file From 19e5dd79ea90a3c749e5b4b33fa9c0760e749192 Mon Sep 17 00:00:00 2001 From: Drew Scoggins Date: Wed, 26 Oct 2016 13:32:30 -0700 Subject: [PATCH 4/4] Move JIT perf tests to new infrastructure Moved over the running of the JIT perf tests to use the same logic as the perflab tests. Had to make a few changes to what we save and where since we reuse the sandbox folder. --- perf.groovy | 43 +++----------------------------- tests/scripts/run-xunit-perf.cmd | 5 +++- 2 files changed, 7 insertions(+), 41 deletions(-) diff --git a/perf.groovy b/perf.groovy index aea3c45d24f0..a95b68142caf 100644 --- a/perf.groovy +++ b/perf.groovy @@ -52,12 +52,14 @@ def static getOSGroup(def os) { batchFile("set __TestIntermediateDir=int&&build.cmd release ${architecture}") batchFile("tests\\runtest.cmd release ${architecture} GenerateLayoutOnly") batchFile("tests\\scripts\\run-xunit-perf.cmd -arch ${architecture} -configuration ${configuration} -testBinLoc bin\\tests\\Windows_NT.${architecture}.Release\\performance\\perflab\\Perflab -library -uploadToBenchview C:\\Tools\\Microsoft.Benchview.JSONFormat\\tools -runtype " + runType) + batchFile("tests\\scripts\\run-xunit-perf.cmd -arch ${architecture} -configuration ${configuration} -testBinLoc bin\\tests\\Windows_NT.${architecture}.Release\\Jit\\Performance\\CodeQuality -uploadToBenchview C:\\Tools\\Microsoft.Benchview.JSONFormat\\tools -runtype " + runType) } } // Save machinedata.json to /artifact/bin/ Jenkins dir def archiveSettings = new ArchivalSettings() - archiveSettings.addFiles('sandbox\\perf-*.xml') + archiveSettings.addFiles('perf-*.xml') + archiveSettings.addFiles('perf-*.etl') Utilities.addArchival(newJob, archiveSettings) Utilities.standardJobSetup(newJob, project, isPR, "*/${branch}") @@ -79,45 +81,6 @@ def static getOSGroup(def os) { } } -[true, false].each { isPR -> - ['Windows_NT'].each { os -> - def newJob = job(Utilities.getFullJobName(project, "perf_${os}", isPR)) { - - // Set the label. - label('performance') - steps { - // Batch - batchFile("C:\\Tools\\nuget.exe install Microsoft.BenchView.JSONFormat -Source http://benchviewtestfeed.azurewebsites.net/nuget -OutputDirectory C:\\tools -Prerelease -ExcludeVersion") - batchFile("py C:\\tools\\Microsoft.BenchView.JSONFormat\\tools\\machinedata.py") - batchFile("set __TestIntermediateDir=int&&build.cmd release ${architecture}") - batchFile("tests\\runtest.cmd release ${architecture}") - batchFile("tests\\scripts\\run-xunit-perf.cmd -arch ${architecture} -configuration ${configuration} -testBinLoc bin\\tests\\Windows_NT.x64.Release\\Jit\\Performance\\CodeQuality") - } - } - - // Save machinedata.json to /artifact/bin/ Jenkins dir - def archiveSettings = new ArchivalSettings() - archiveSettings.addFiles('sandbox\\perf-*.xml') - archiveSettings.addFiles('machinedata.json') - Utilities.addArchival(newJob, archiveSettings) - - Utilities.standardJobSetup(newJob, project, isPR, "*/${branch}") - if (isPR) { - TriggerBuilder builder = TriggerBuilder.triggerOnPullRequest() - builder.setGithubContext("${os} Perf Tests") - builder.triggerOnlyOnComment() - builder.setCustomTriggerPhrase("(?i).*test\\W+${os}\\W+perf.*") - builder.triggerForBranch(branch) - builder.emitTrigger(newJob) - } - else { - // Set a push trigger - TriggerBuilder builder = TriggerBuilder.triggerOnCommit() - builder.emitTrigger(newJob) - } - } -} - // Create the Linux/OSX/CentOS coreclr test leg for debug and release and each scenario [true, false].each { isPR -> ['Ubuntu'].each { os -> diff --git a/tests/scripts/run-xunit-perf.cmd b/tests/scripts/run-xunit-perf.cmd index 2671dfd6e252..89a7dac23ff7 100644 --- a/tests/scripts/run-xunit-perf.cmd +++ b/tests/scripts/run-xunit-perf.cmd @@ -62,7 +62,7 @@ xunit.performance.analysis.exe %PERFOUT%.xml -xml %XMLOUT% > %BENCHNAME%-analysi @rem optionally upload results to benchview if not [%BENCHVIEW_PATH%] == [] ( - py %BENCHVIEW_PATH%\measurement.py xunit perf-Perflab.xml --better desc --drop-first-value + py %BENCHVIEW_PATH%\measurement.py xunit perf-%BENCHNAME%.xml --better desc --drop-first-value py %BENCHVIEW_PATH%\submission.py measurement.json ^ --build ..\build.json ^ --machine-data ..\machinedata.json ^ @@ -75,6 +75,9 @@ if not [%BENCHVIEW_PATH%] == [] ( --arch "%TEST_ARCH%" ^ --machinepool "PerfSnake" py %BENCHVIEW_PATH%\upload.py submission.json --container coreclr + REM Save off the results to the root directory for recovery later in Jenkins + xcopy perf-%BENCHNAME%*.xml %CORECLR_REPO%\ + xcopy perf-%BENCHNAME%*.etl %CORECLR_REPO%\ ) else ( type %XMLOUT% | findstr "test name" type %XMLOUT% | findstr Duration