Age | Commit message (Collapse) | Author | Files | Lines |
|
Just what it says on the tin. Should fix #13697.
|
|
* Refactor AsSpan to AsReadOnlySpan
* Updated usages.
* Renamed test methods.
* Bring back AsSpan as obsolete method.
|
|
Reprioritize tests to improve inner-loop throughput.
|
|
These tests were too short-running to measure effectively. Add an inner
iteration count that makes the running time around 1 second (measured
locally).
|
|
|
|
|
|
* 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
|
|
|
|
|
|
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.
|
|
- 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.
|
|
|
|
tests to have the correct expected results.
|
|
precision when printing failure messages.
|
|
netcoreapp1.1 instead of netstandard1.4
|
|
|
|
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.
|
|
|
|
* Temporary removing string slice bench test.
* Using if false directive to skip breaking tests
|
|
- 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.
|
|
Reduce case iteration counts in SeekUnroll.
|
|
Deleted a few other irrelevant properties as well while I was on it.
Fixes #7711
|
|
|
|
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.
|
|
|
|
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
|
|
|
|
- Thanks to @taumuon for licensing the test, per our request!
- License is MIT.
|
|
* Fix spelling
* Add 3PN for SciMark
* Add ByteMark 3PN entry
* Remove Microsoft copyright
* Add 3PN for Richards benchmark
|
|
|
|
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
|
|
|
|
Closes #9747.
|
|
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.
|
|
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.
|
|
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
|
|
Based on the "version 6" test base. As with revcomp, keeping the input
files as unix line ending, and relatively small.
|
|
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.
|
|
JIT: Add BinaryTrees benchmark variant
|
|
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.
|
|
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.
|
|
* 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.
|
|
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.
|
|
Adding CoreCLR Perf support for Jenkins
|
|
desktop reflection issue
|
|
|
|
|
|
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.
|
|
Unifying the way project referring mscorlib facade builds
|
|
|