David Rönnqvist
bc235afcf8
[stdlib] Update reduce benchmark to compare the two forms
...
The ReduceInto benchmark performs three tasks using both `reduce(_:_)` and `reduce(into:_:)` so that their performance can be compared:
1. Summing an array, reducing to `Int`
2. Filtering an array, reducing to `[Int]`
3. Counting letter frequencies, reducing to `[Character: Int]`
2017-07-18 17:42:27 +02:00
Erik Eckstein
ffa38bbf84
Revert "Add benchmarks for a number of NSStringAPI functions"
...
This reverts commit cf73e560ad .
The benchmarks are causing leaks.
Reverted until this is investigated.
2017-07-17 17:38:49 -07:00
David Rönnqvist
e15ea5fcf3
[stdlib] Implement reduce with inout (SE-0171)
...
Implement and document `reduce(into:_:)`, with a few notes:
- The `initial` parameter was renamed `initialResult` to match the first parameter in `reduce(_:_:)`.
- The unnamed `combining` parameter was renamed `updateAccumulatingResult` to try and resemble the naming of the closure parameter in `reduce(_:_:)`.
- The closure throws and `reduce(into:_)` re-throws.
- This documentation mentions that `reduce(into:_)` is preferred over `reduce(_:_:)` when the result is a copy-on-write type and an example where the result is a dictionary.
Add benchmarks for reduce with accumulation into a scalar, an array, and a dictionary.
Update expected error message in closures test (since there are now two `reduce` methods, the diagnostic is different).
2017-07-14 23:24:42 +02:00
Philippe Hausler
cf73e560ad
Add benchmarks for a number of NSStringAPI functions
2017-07-13 11:33:35 -07:00
Andrew Trick
b76794ce2b
Benchmarks for memory exclusivity enforcement.
...
Three blind microbenchmarks:
- global access
- materializeForSet class property
- nested independent access
2017-06-29 14:31:46 -07:00
Michael Ilseman
bd5189c25a
[String] Grapheme fast paths for punctuation: 5-8x speedup.
...
Many strings use non-sub-300 punctuation characters (e.g. unicode
hyphen, CJK quotes, etc). This can cause switching between fast and
slow paths for grapheme breaking. Add in fast-paths for general
punctuation characters and CJK punctuation and symbol characters.
This results in about a 5-8x speedup for heavily (unicode) punctuated
Latiny and CJKy workloads.
2017-06-27 19:18:51 -07:00
Dave Abrahams
cb4c656bc2
[stdlib] Add benchmarks for Character's unicodeScalars view
...
In local testing, these benchmark results change as follows due to f212fac717 :
<details open>
<summary>Regression (20)</summary>
TEST | OLD | NEW | DELTA | SPEEDUP
--- | --- | --- | --- | ---
CharIteration_utf16_unicodeScalars | 33074 | 79510 | +140.4% | **0.42x**
CharIteration_utf16_unicodeScalars_Backwards | 73826 | 115515 | +56.5% | **0.64x**
</details>
<details open>
<summary>Improvement (43)</summary>
TEST | OLD | NEW | DELTA | SPEEDUP
--- | --- | --- | --- | ---
CharIndexing_korean_unicodeScalars | 118425 | 10360 | -91.3% | **11.43x**
CharIndexing_tweet_unicodeScalars_Backwards | 226366 | 19850 | -91.2% | **11.40x**
CharIndexing_tweet_unicodeScalars | 240596 | 21178 | -91.2% | **11.36x**
CharIndexing_japanese_unicodeScalars_Backwards | 136265 | 12032 | -91.2% | **11.33x**
CharIndexing_chinese_unicodeScalars | 92226 | 8146 | -91.2% | **11.32x**
CharIndexing_russian_unicodeScalars | 100908 | 8948 | -91.1% | **11.28x**
CharIndexing_japanese_unicodeScalars | 145414 | 12895 | -91.1% | **11.28x**
CharIndexing_ascii_unicodeScalars | 121438 | 10779 | -91.1% | **11.27x**
CharIndexing_russian_unicodeScalars_Backwards | 94190 | 8367 | -91.1% | **11.26x**
CharIndexing_korean_unicodeScalars_Backwards | 110175 | 9803 | -91.1% | **11.24x**
CharIndexing_chinese_unicodeScalars_Backwards | 86479 | 7715 | -91.1% | **11.21x**
CharIndexing_ascii_unicodeScalars_Backwards | 113255 | 10132 | -91.1% | **11.18x**
CharIteration_ascii_unicodeScalars_Backwards | 114873 | 13701 | -88.1% | **8.38x**
CharIteration_chinese_unicodeScalars_Backwards | 85778 | 10411 | -87.9% | **8.24x**
CharIteration_russian_unicodeScalars_Backwards | 94504 | 11471 | -87.9% | **8.24x**
CharIteration_japanese_unicodeScalars_Backwards | 136231 | 16569 | -87.8% | **8.22x**
CharIteration_tweet_unicodeScalars_Backwards | 222907 | 27165 | -87.8% | **8.21x**
CharIteration_korean_unicodeScalars_Backwards | 110132 | 13443 | -87.8% | **8.19x**
CharIteration_korean_unicodeScalars | 79540 | 11859 | -85.1% | **6.71x**
CharIteration_russian_unicodeScalars | 68209 | 10211 | -85.0% | **6.68x**
CharIteration_japanese_unicodeScalars | 98016 | 14690 | -85.0% | **6.67x**
CharIteration_tweet_unicodeScalars | 161177 | 24227 | -85.0% | **6.65x**
CharIteration_chinese_unicodeScalars | 61702 | 9278 | -85.0% | **6.65x**
CharIteration_ascii_unicodeScalars | 81049 | 12218 | -84.9% | **6.63x**
</details>
2017-06-27 17:25:41 -07:00
Erik Eckstein
2c0b69d241
benchmarks: Make sure there is no constant propagation in the StringBuilder benchmarks.
...
This fixes the StringAdder benchmark, where the string addition was completely constant folded.
It has only minimal effect on the other benchmarks in this file, because the optimizer didn't constant fold the strings there anyway.
2017-06-21 17:21:51 -07:00
swift-ci
42649b36b0
Merge pull request #10468 from eeckstein/convert-benchmark
2017-06-21 17:10:35 -07:00
Erik Eckstein
f45bddcaa6
benchmarks: Convert the GlobalClass benchmark to a SILOptimizer test
...
The purpose of the benchmark was to check a very specific ARC optimization, which is better tested with a lit test.
Beside that, the benchmark was broken anyway.
2017-06-21 14:32:29 -07:00
Erik Eckstein
e7360897d2
benchmarks: fix ByteSwap benchmark
...
*) Use getInt to prevent loop hoisting of the benchmark functions
*) Reduce the overhead of CheckResult by moving it out of the loop
*) Prevent inlining of the actual benchmark functions
2017-06-21 13:37:20 -07:00
Erik Eckstein
8abe785300
benchmarks: Fix the BitCount benchmark
...
*) Increase the iteration count, so that we cat a time value > 100 for better accuracy
*) Use getInt to prevent constant propgation and loop hoisting
2017-06-19 20:30:20 -07:00
Nate Cook
ced26b8565
[benchmark] Fix the Dictionary(group:by:) test
...
When testing quadratic behavior, remember to repeat small amounts of the
behavior several times, not to increase the N, which is squared. 🙄
2017-06-16 18:33:15 -05:00
Nate Cook
220614c016
[benchmark] Add benchmark for Dictionary(group:by:)
2017-06-15 11:45:33 -05:00
Ben Cohen
ac18e4297a
Benchmarks for equating/comparing substrings ( #10030 )
...
* Benchmarks for equating/comparing substrings
* Update main.swift
* Regnerate benchmarks harness file
2017-06-01 14:52:58 -07:00
Michael Ilseman
6ee5745a3a
[benchmark] Add Russian StringWalk variant (off by default)
2017-05-31 11:34:42 -07:00
Dave Abrahams
010412ced2
[stdlib] Add Substring comparison benchmarks
...
This exercise reveals lots of unimplemented cases, which, when implemented, will
cause us to uncomment the disabled code.
2017-05-24 20:56:26 -07:00
Joe Shajrawi
a408803345
Revert "[stdlib] Add Substring comparison benchmarks"
2017-05-24 20:20:55 -07:00
Dave Abrahams
01e0f0aceb
[stdlib] Add Substring comparison benchmarks
...
This reveals lots of unimplemented cases, which will cause us to uncomment the
disabled code.
2017-05-24 16:58:29 -07:00
Max Moiseev
d818008a25
[benchmark] Unbreaking the complex expression in ByteSwap
...
Fixes: <rdar://problem/31543153>
2017-05-17 15:56:18 -07:00
Pavol Vaskovic
a452b0b12e
Fixed filename in the header comment.
2017-05-15 20:04:00 +02:00
Michael Ilseman
fb5734c24f
Merge pull request #9575 from milseman/unihan_fasterhan
...
[stdlib] String: Walk Chinese/Japanese faster: 2x/4x forwards/backwards
2017-05-14 13:50:15 -07:00
Ben Cohen
ea2f64cad2
[stdlib] Add Sequence.Element, change ExpressibleByArrayLiteral.Element to ArrayLiteralElement ( #8990 )
...
* Give Sequence a top-level Element, constrain Iterator to match
* Remove many instances of Iterator.
* Fixed various hard-coded tests
* XFAIL a few tests that need further investigation
* Change assoc type for arrayLiteralConvertible
* Mop up remaining "better expressed as a where clause" warnings
* Fix UnicodeDecoders prototype test
* Fix UIntBuffer
* Fix hard-coded Element identifier in CSDiag
* Fix up more tests
* Account for flatMap changes
2017-05-14 06:33:25 -07:00
Dave Abrahams
5a0db2f389
[stdlib] Add initial Substring benchmarks
2017-05-12 19:59:41 -07:00
Michael Ilseman
075c6e6a04
[benchmark] Add more (off-by-default) StringWalk benchmarks.
...
Gyb up StringWalk, to avoid the code explosion. Add in benchmarks for
walking Chinese, Japanese, and Korean text.
2017-05-12 17:34:09 -07:00
eeckstein
087b84e800
Merge pull request #9330 from palimondo/check-results-error-msg
...
[benchmark] CheckResults with auto-generated error message
2017-05-12 08:47:40 -07:00
practicalswift
8c40c65c80
[gardening] Fix typos.
2017-05-09 21:50:04 +02:00
Dave Abrahams
e0c08c7617
Merge branch 'master' into check-results-error-msg
2017-05-05 15:15:12 -07:00
Dave Abrahams
e32fb8badb
Remove interpolated strings from benchmark CheckResults
...
This call was in many cases skewing the benchmark results.
Note: Intentionally staging this in without removing the old overload initially.
2017-05-05 10:25:02 -07:00
Pavol Vaskovic
dcd98cc04f
CheckResults with auto-generated error message
...
In order to minimize impact of results checking on test performance, this removes the @autoclosure for error message.
Added new version of `CheckResults` that takes only `resultsMatch: Bool` - rest of the parameters are defaulted to `StaticString`s for method and file name, plus line number. Old method was deprecated, but left in place as tool for debugging failing checks. All tests were move to use the new method.
2017-05-05 14:08:13 +02:00
practicalswift
a9c03845cc
[gardening] Use consistent headers
2017-05-04 15:24:35 +02:00
Erik Eckstein
3c4fd12a3f
benchmarks: Prevent the optimizer to completely optimize away Character results in the CharacterLiteralsSmall benchmark.
2017-05-03 09:05:45 -07:00
Erik Eckstein
62be182cac
benchmarks: add a comment and use more meaningful numbers
2017-04-27 16:59:42 -07:00
Maxim Moiseev
41b00c57ab
Merge pull request #9044 from moiseev/substring-in
...
[stdlib] Substring
2017-04-26 19:25:59 -07:00
Max Moiseev
3b607436be
Making benchmarks compile
2017-04-26 16:49:34 -07:00
Erik Eckstein
994c04f943
benchmarks: add another benchmark for appending multiple array elements.
...
In contrast to the other similar benchmarks, this benchmark starts with a new array each iteration.
2017-04-26 15:06:05 -07:00
Erik Eckstein
7914e09aa8
benchmarks: Add a benchmark for COW existentials
2017-04-26 14:54:16 -07:00
swift-ci
0ce898be79
Merge pull request #9036 from aschwaighofer/benchmark_more_autoreleasepools
2017-04-26 13:52:22 -07:00
Arnold Schwaighofer
ca40134c03
[benchmark] Sprinkle more autoreleasepools
...
SR-4666
2017-04-26 13:21:43 -07:00
swift-ci
1be1f07263
Merge pull request #9031 from aschwaighofer/benchmark_objectivec_bridge_autoreleasepool
2017-04-26 10:53:06 -07:00
Arnold Schwaighofer
a8e3fc9af3
[benchmark] Lower the max memory size of ObejctiveC bridging tests by moving the
...
autoreleasepool down such that we have less allocations in the pool until it is
empty
rdar://31788785
SR-4666
2017-04-26 10:01:55 -07:00
Arnold Schwaighofer
4338e525bf
Merge pull request #9027 from aschwaighofer/benchmark_dictionarybridge_autoreleasepool
...
[benchmark] Add autorelease pool to fix memory hogging
2017-04-26 09:56:25 -07:00
Arnold Schwaighofer
7ed2122947
[benchmark] Add autorelease pool to fix memory hogging
...
rdar://31788785
2017-04-26 07:37:07 -07:00
Michael Ilseman
111d6200eb
Merge pull request #8979 from milseman/parse_my_tweets_faster
...
[stdlib] Parse my tweets faster! 2x forwards, 3x reverse
2017-04-26 07:36:18 -07:00
Michael Ilseman
517ac2a66f
[benchmark] Add in some (default off) mixed-string micro benchmarks
...
Adds in a benchmark to see how quickly we can traverse mixed latin and
emoji strings. Default disabled and part of the stringTests suite.
2017-04-24 14:57:42 -07:00
Maxim Moiseev
1c1b2b966d
[stdlib] String : RangeReplaceableCollection & BidirectionalCollection ( #8921 )
...
* [stdlib] String : RangeReplaceableCollection & BidirectionalCollection
* Add source compatibility hack for Swift.max
* Add source compatibility hack for Swift.min
* Remove redundant conformance in benchmarks
* Fix stupid typo I thought I'd already pushed
* XFAIL testing now-redundant conformance
* XFAIL an IDE test for now
2017-04-23 20:04:54 -07:00
Michael Ilseman
edf8e6e5e6
[benchmark] Move work into the harness generator
...
Move the improvements to main.swift into the harness generator and
template itself. Run the generator.
2017-04-19 14:59:35 -07:00
Michael Ilseman
9ffc2f073a
[benchmark] Add String test suite (off by default)
...
Starts a String perf test suite called stringTests which is
off-by-default, but allows us to place some lower-level targeted
benchmarking.
2017-04-19 13:31:34 -07:00
practicalswift
a029589093
[gardening] Use consistent headers
2017-04-18 19:51:08 +02:00
Max Moiseev
9b53efd72c
Merge branch 'master' into new-integer-protocols
2017-04-17 09:53:44 -07:00