Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
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
|
|
|
|
After increasing the timeout time for gcstress, these tests continue to fail
due to timeouts. To get the gcstress legs green and keep them within a manageable
amount of time they will be disabled.
|
|
Tests that demonstrate that constant arguments passed to callees can
lead to inlining performance wins. All numeric types are tested, as
well as strings.
Tests are generally written as positive/negative pairs with calls to
the same inlinee. This exposes the call site sensitivity. Performance
of the positive test should be better than the negative test.
The overall benchmarking approach used here is something that we might
consider adopting for other small-scale codegen performance tests.
|
|
Fix seed so benchmark behavior doesn't vary randomly from run to run.
|
|
* Adding some basic System.Math performance tests.
* Renaming 'floatnative' to 'floatdouble'.
* Removing outdated workarounds in the floatdouble interop code.
* Renaming 'finite.cpp' to 'math.cpp'
* Updating the double-precision math tests.
* Updating PAL_EPSILON to be more precise.
|
|
Fix #5035
The file paths should be case-sensitive on Linux.
Signed-off-by: Jiyoung Yun <jy910.yun@samsung.com>
|
|
|
|
Add missing xunit performance attributes
|
|
We were not getting instructions retired data for these benchmarks
because the attribute to trigger measurement was missing.
|
|
Fix a couple of class names for benchmarks so they more accurately
describe the benchmark.
|
|
The valiation code wasn't correctly for the iteration strategy
used by xunit-performance.
Closes #4270.
|
|
(#4151)
|