summaryrefslogtreecommitdiff
path: root/tests/src/JIT/Performance/CodeQuality
AgeCommit message (Collapse)AuthorFilesLines
2017-08-30Move performance tests back into Priority 0.Pat Gavlin52-104/+52
Just what it says on the tin. Should fix #13697.
2017-08-27Refactor AsSpan to AsReadOnlySpan (#13608)Adrian Godong1-5/+5
* Refactor AsSpan to AsReadOnlySpan * Updated usages. * Renamed test methods. * Bring back AsSpan as obsolete method.
2017-08-26Merge pull request #13411 from pgavlin/RepriTestsPat Gavlin52-22/+73
Reprioritize tests to improve inner-loop throughput.
2017-08-22Add InnerIterationCount to layout benchmarksJoseph Tremoulet1-2/+2
These tests were too short-running to measure effectively. Add an inner iteration count that makes the running time around 1 second (measured locally).
2017-08-17Add perf testJoseph Tremoulet2-0/+159
2017-08-16Move less valuable tests to priority 1.Pat Gavlin52-22/+73
2017-07-31Add benchmarks mandelbrot and fannkuch (#12933)Victor "Nate" Graf4-0/+342
* Add benchmarks mandelbrot and fannkuch Adding mandelbrot and fankuch-redux from Benchmarks Game to complete the representation of benchmarks from this list http://benchmarksgame.alioth.debian.org/u64q/csharp.html * Update source acknolegments and edit return codes * Add checksums to verify benchmark runs This commit adds checksums, which are pre-computed for each input case, to verify that the fannkuch and mandelbrot benchmarks actualy compute the desired function * Revert version bump * Remove XunitPerfHarness from Main * Remove an unnecessary line * Add iterations to fannkuch to inscrease runtime
2017-07-25Completelly fix build of tests on LinuxRoman Artemev2-4/+4
2017-07-04Update to latest System.MemoryJan Kotas1-2/+2
2017-06-07Modify iteration behavior some benchmarksAndy Ayers43-185/+245
This change updates the iteration behavior for the following benchmarks, so that they generally run for about 1 second per iteration: * Inline/InlineGCStruct * Inline/NoThrowInline * Span/IndexerBench/Indexer4 * Functions/MathTests/* It also removes the length 1, 10, and 1000 variants of the Span/SpanBench tests, leaving just the length 100 variants. Analysis has shown that there is no need to test varying lengths here. Iteration counts for these tests have been left as is and will be fixed subsequently. Partially addresses #11654.
2017-05-26Enable linux perf runs (#11905)José Rivero72-108/+36
- Removing `[assembly: MeasureInstructionsRetired]` from performance tests. - Due to this issue: https://github.com/Microsoft/xunit-performance/issues/231, we are blocked from running on performance tests on Linux. The tag is not used by infrastructure and it is passed during runtime when profiling on Windows. - Adding the option to execute CoreRun with the stability prefix. - Moving file to be archived by Jenkins and updating groovy file. - Setting the maximum number of iterations.
2017-05-16Update Coreclr to 2.0.0 buildtoolswtgodbe72-295/+284
2017-05-16Updated the JIT/Performance/CodeQuality/Math/Functions single-precision ↵Tanner Gooding15-15/+15
tests to have the correct expected results.
2017-05-16JIT/Performance/CodeQuality/Math/Functions tests to use the appropriate ↵Tanner Gooding38-38/+38
precision when printing failure messages.
2017-05-16Updating the JIT/Performance/CodeQuality/Math/Functions tests to target ↵Tanner Gooding2-6/+2
netcoreapp1.1 instead of netstandard1.4
2017-05-16Adding perf tests for the single precision math functions in System.MathF.Tanner Gooding20-4/+889
2017-04-17Jit intrinsics for Span<T>.get_Item and ReadOnlySpan<T>.get_Item. (#10910)Andy Ayers2-0/+1065
Implement these two methods as optional-expand jit intrinsics. Uses `GT_ARR_BOUNDS_CHECK` for the bounds check so in some cases downstream code is able to eliminate redundant checks. Fully general support (on par with arrays in most cases) is still work in progress. Update one bit of code in the optimizer that assumed it knew the tree types that appeared in a `GT_ARR_BOUNDS_CHECK`. Add benchmark tests for Span and ReadOnlySpan indexers. Tests ability of jit to reason about indexer properties with respect to loop bounds and related indexer uses. Some cases inspired by span indexer usage in Kestrel. Closes #10785. Also addresses lack of indexer inlining noted in #10031. Span indexers should now always be inlined, even when invoked from shared methods.
2017-04-07Using AsSpan since we no longer have slice on string. Renaming Tests. (#10758)Ahson Ahmed Khan1-8/+8
2017-03-31Temporary removing string slice span bench test. (#10617)Ahson Ahmed Khan1-3/+5
* Temporary removing string slice bench test. * Using if false directive to skip breaking tests
2017-03-18Update SpanBench testJoseph Tremoulet1-519/+718
- Re-enable the tests that were disabled in e859c309. - Re-work how tests are invoked from the command line to require less boilerplate - Now each test has a single [Benchmark] entrypoint - That entrypoint invokes its test's single inner-loop by wrapping it in a lambda that it passes to a new helper Invoke method (shared across all tests) which handles the xunit vs. command-line differences.. - Main finds the entrypoints by using reflection to search for the [Benchmark] attributes, so the explicit list of stringified test names is no longer needed and the command line will run the same set of tests that xunit-perf does. - The new SpanAPI tests now get invoked when this tests is run from the command line as well. - Add [NoInlining] to the SpanAPI tests' kernels. - Add some heap writes and conditional writes to prevent deadcode optimization from eliminating tests' kernels (assuming we don't do interprocedural constant propagation or deadcode, or store sinking and final value calculation, or PRE...). - Split the Index SpanAPI tests into one version that uses a loop-invariant index and thus should get hoisted out of the loop, and another version that uses variant indices.
2017-03-17Merge pull request #10238 from pgavlin/SeekUnrollLimitPat Gavlin1-2/+13
Reduce case iteration counts in SeekUnroll.
2017-03-17Delete unused ReferenceLocalMscorlib property from test proj files (#10250)Jan Kotas71-284/+0
Deleted a few other irrelevant properties as well while I was on it. Fixes #7711
2017-03-17Address feedback.Pat Gavlin1-1/+11
2017-03-16Reduce case iteration counts in SeekUnroll.Pat Gavlin1-2/+3
This test was taking too long to run on x86. After investigation, it does not appear that there is a fundamental problem with the code generated for the test; rather, it seems that we are running an excessive number of iterations when using this test as a correctness test. This change reduces the number of times we run each case from 10 to 1 unless otherwise specified on the command line.
2017-03-11Update License and add 3PN notices (#10117)Rich Lander2-0/+87
2017-03-08Update to buildtools version 1.0.27-prerelease-01407-02, and enable creating ↵chcosta1-1/+1
transport packages (#10020) * Update BuildTools fixes * Update to buildtools version 1.0.27-prerelease-01407-02, and enable building transport packages * fix netcore project * Avoid msb3644 error * Fix bad copy
2017-03-05Add 3PN entry for Livermore Loops coded in C (#9972)Rich Lander1-0/+17
2017-03-05Add 3PN for Burgers equation (#9966)Rich Lander2-1/+36
- Thanks to @taumuon for licensing the test, per our request! - License is MIT.
2017-03-03Add 3PN entries (#9943)Rich Lander18-60/+92
* Fix spelling * Add 3PN for SciMark * Add ByteMark 3PN entry * Remove Microsoft copyright * Add 3PN for Richards benchmark
2017-03-01Temporarily disabling SpanBench tests that use indexer setter. (#9896)Ahson Ahmed Khan1-8/+8
2017-03-01Adding Span API perf tests for comparison with arrays and to monitor ↵Ahson Ahmed Khan2-316/+843
progress (#9790) * wip * Adding Span API perf tests for comparison with arrays and to monitor progress * Reducing iteration count so tests finish in < 2 minutes * Reducing the number of test cases * Commenting out ref DangerousGetPinnableReference test * Updated csproj to use latest compiler * Tuning test cases and runtime
2017-02-28Remove some unused benchmarks (#9843)Andy Ayers26-11930/+0
2017-02-23Move jit tests to directory with proper casingAndy Ayers2-0/+513
Closes #9747.
2017-02-22Fix projects that specified DebugType incorrectlyAndy Ayers62-434/+372
Make conditional DebugType properties uncondtional. Fix debug type and optimize settings for _d and _do suffixed tests. Remove conditional DebugType propery if there is also an unconditonal property.
2017-02-13Fix bytemark benchmark (#9497)Andy Ayers1-37/+40
I misunderstood how bytemark uses the `adjust` parameter and inadvertently enabled self-adjustment for the xunit-perf versions of these tests. Not surprisingly the results showed crazy run to run variations. Update these tests to set `adjust = 1` to stop the self-adjustment. Iteration and loop counts tweaked so that each test runs for roughly 1 second on the perf machines.
2017-02-09Add k-nucleotide to BenchmarkGamesGustavo Hurovich4-0/+33873
Changed .gitattributes to set line endings to windows ones for the input files of this test. Added two different tests, one with and the other without parallelism. Used FileStream instead of BufferedStream, since the latter does not exist in netstandard 1.4
2017-01-27Add BenchmarkGames regexdna testAndy Ayers4-0/+4463
Based on the "version 6" test base. As with revcomp, keeping the input files as unix line ending, and relatively small.
2017-01-24Add BenchmarkGames revcomp benchmarkAndy Ayers5-1/+4484
This is based on version 1 of the C# variants. Am not including the largest input file since it is ~250MB. Instead we iterate on a smaller file. Note the text input files are opened as binary and the app looks for Unix line endings, hence the update to .gitattributes. The benchmark is setup to look for its input next to the benchmark exe as run in both normal test and xunit-perf test modes, keying off the CORE_ROOT environment variable. In the xunit-perf mode the input files are subsequently copied into the sandbox. Also updated the ending copyright date on the Benchmark Games license page.
2017-01-10Merge pull request #8867 from AndyAyersMS/BinaryTreesVariantAndy Ayers4-0/+191
JIT: Add BinaryTrees benchmark variant
2017-01-10Reduce SeekUnroll iter countMichelle McDaniel1-2/+10
On non-hardware accelerated platforms, reduce the inner iteration count in SeekUnroll. This test was timing out in x86 release builds because the iteration count was too high.
2017-01-09JIT: Add BinaryTrees benchmark variantAndy Ayers4-0/+191
Add a variant that uses a class and out parameter instead of returning a struct by value. This variant is similar to version 3 from the benchmarks games site, but with validation added and parallelism removed. See related analysis in #8837. According to xunit-perf runs, this version's performance is improved (~10%) by enabling the model inlining policy. When the model policy is enabled the inliner will inline the two outermost calls to `ChildTreeNodes` in the innermlost loop. Also, make sure the new and the original version to build the same way in release and debug.
2016-11-15Changing JIT perf test names to fix how they are organized on BenchView (#8083)jorive71-86/+290
* Changing JIT performance tests' names to fix how tests are organized on BenchView. * Adding changes based on PR suggestions. - Add double quotes on cmd script - Keep name casing consistent for the Benchstone benchmarks. * Updating datacontractxml value to match new class name. * Removing an extra / on the xmlns string. * Making sure we are getting latest BenchView tools. - Changed where BenchView tools are installed to (from C:\tools to %WORKSPACE%) - Check if the tools already exist, if so, delete them and download them again.
2016-11-11Enable unrolling of SIMD_LIMIT loopsJoseph Tremoulet2-0/+202
Since the Vector<T> abstraction has a `Count` that is not a C#-compile-time constant, it encourages use of iteration to search/aggregate individual elements using symbolic indexing, which in turn leads to codegen that spills the vector to memory for each element access, and performs bounds checks for each access. These loops will have low trip counts that are jit-compile-time constant, and constant indexing into Vector<T> allows more efficient register-to-register sequences and bounds-check elision. This change enables RyuJit's loop unroller when such a loop is discovered, and increases the size threshold to target optimizing such loops much more aggressively than the unroller's previous incarnation. Add a test with a motivating loop to the Performance/CodeQuality/SIMD suite. Closes #7843.
2016-10-28Merge pull request #7835 from DrewScoggins/coreclr-perfDrew Scoggins77-1/+78
Adding CoreCLR Perf support for Jenkins
2016-10-26Move benchmarks to use netstandard1.4 instead of netcoreapp1.0 to fix ↵John Soklaski77-1/+78
desktop reflection issue
2016-10-20Add cross-reference from test case to inspiring issueAndy Ayers1-0/+2
2016-10-19Add comment to test case and run it through codeformatter.Andy Ayers1-73/+95
2016-10-19Inliner: avoid inlining callees with GC structs on cold pathsAndy Ayers2-0/+165
If an inline introduces a local or temp GC struct, the initialization of that struct is done in the root method prolog. This can hurt performance if the inline call site is cold. Detect this during importation and update the inline policy to back out of the inline if the inline is an always or discretionary candidate. Jit diffs shows size wins in the core library with no regressions. ``` Total bytes of diff: -8789 (-0.29 % of base) diff is an improvement. Total byte diff includes 0 bytes from reconciling methods Base had 0 unique methods, 0 unique bytes Diff had 0 unique methods, 0 unique bytes Top file improvements by size (bytes): -8789 : System.Private.CoreLib.dasm (-0.29 % of base) 1 total files with size differences. Top method improvements by size (bytes): -320 : System.Private.CoreLib.dasm - FrameSecurityDescriptor:CheckDemand2(ref,ref,long,bool):bool:this -224 : System.Private.CoreLib.dasm - RuntimeConstructorInfo:CheckCanCreateInstance(ref,bool) -214 : System.Private.CoreLib.dasm - RuntimeType:GetMethodBase(ref,long):ref -150 : System.Private.CoreLib.dasm - CultureInfo:GetCultureInfoByIetfLanguageTag(ref):ref -146 : System.Private.CoreLib.dasm - GC:RegisterForFullGCNotification(int,int) 103 total methods with size differences. ``` Desktop testing shows similar wins in a number of places and only a few sparse small regressions. Added a perf test. Thanks to @hypersw for noticing this. Closes #7569.
2016-08-23Cosmetic changes, removing unnceseary files and entries in project files.Rama Krishnan Raghupathy77-231/+0
Unifying the way project referring mscorlib facade builds
2016-08-04Add a throw/inline benchmarkMike Danes2-0/+122