Commit Graph

237 Commits

Author SHA1 Message Date
Joe Shajrawi
ca6ccb4864 Benchmark categorization support 2017-09-22 17:39:04 -07:00
Andrew Trick
78b072b4da Add a CPU microbenchmarks for isUniquelyReferenced. 2017-09-22 16:38:49 -07:00
Andrew Trick
d9af4c5f45 Introduce BenchmarkInfo and BenchmarkCategories. 2017-09-22 12:49:59 -07:00
Erik Eckstein
d6f6774214 benchmarks: add a benchmark for string enum construction from a string raw value. 2017-09-18 17:50:24 -07:00
Dave Abrahams
31341e6753 Merge pull request #10976 from d-ronnqvist/reduce-with-inout
[stdlib] Implement SE-0171: Reduce with inout
2017-07-23 19:57:25 -07:00
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
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
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
dc184b5e96 [stdlib] Update main.swift for added benchmarks 2017-05-24 19:01:32 -07:00
Pavol Vaskovic
05b977d54b Disable HashQuadratic benchmark
Moving HashQuadratic performance test from “precommit” suite to “other”, so that it does not slow down the testing until we have a fix for SR-3268.
2017-05-18 07:29:37 +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
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
Pavol Vaskovic
68fde69535 Applied DRYer. Made python lint happy. 2017-05-02 21:49:59 +02:00
Pavol Vaskovic
bdffb35d17 SR-4572 Remove jinja2 dependency from benchmark test harness generation 2017-05-02 16:20:30 +02: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
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
Arnold Schwaighofer
c9aa05c3c6 [benchmark] Move existential tests out of precommit. They are not very stable. 2017-04-20 13:11:20 -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
Michael Ilseman
c1ba0bcd6a [benchmark] Speed up compilation time of suite
This speeds up the compilation time of main.swift in the benchmark
suite from taking a minute or two to about a second. NFC.
2017-04-19 13:30:35 -07:00
Pavol Vaskovic
1c9cc3815a Performance tests for Sequence methods: DropFirst, DropWhile, PrefixWhile 2017-04-12 01:15:02 +02:00
Pavol Vaskovic
739c3b70a8 Add same test variants for DropLast and Prefix as exist on Suffix 2017-04-11 01:22:43 +02:00
Pavol Vaskovic
4f3753a749 Add support for GYB in benchmarks 2017-04-08 09:13:18 +02:00
Arnold Schwaighofer
3c83ea6761 Fix benchmark for generate script 2017-03-29 05:35:48 -07:00
Arnold Schwaighofer
f5cf0aa5d6 Add existential performance benchmarks 2017-03-27 11:32:47 -07:00
swift-ci
b156cbb0f7 Merge pull request #7420 from therealbnut/therealbnut-droplast-suffix-benchmarks 2017-03-14 14:34:53 -07:00
Nate Cook
27b3de06f8 [benchmark] Add test for lazy filter -> array 2017-03-14 11:08:25 -05:00
Ben Cohen
f02f31c2df Add more string benchmarks 2017-03-10 17:20:04 -08:00
Andrew Bennett
34d7a4b5bc Merge branch 'master' into therealbnut-droplast-suffix-benchmarks 2017-03-05 11:57:44 +11:00
therealbnut
c6dc0b0625 Add Array benchmarks 2017-02-25 13:08:39 +11:00
Nate Cook
c53e8d6750 Add quadratic hash performance benchmark 2017-02-19 12:32:33 -06:00
therealbnut
4a55f70832 Benchmarks for dropLast and suffix 2017-02-13 21:50:09 +11:00
Ben Cohen
95988dd29d Add benchmarks for appending UTF8 String views to an array 2017-02-06 14:14:49 -08:00
Ben Cohen
0d39d07efe add more benchmarks of map/reduce 2017-01-27 17:58:55 -08:00
Tony Allevato
9c07eb6534 Add benchmarks for initializing Characters from literals. 2017-01-17 21:35:37 -08:00
Ben Ng
3e718d3a26 Add benchmarks for += in ArrayAppend 2017-01-11 22:11:31 -05:00
practicalswift
30a88d38e6 [gardening] Fix recently introduced typos 2017-01-06 21:16:02 +01:00
practicalswift
6d1ae2a39c [gardening] 2016 → 2017 2017-01-06 16:41:22 +01:00