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
Nate Cook
e56bf42acb
Update generate_harness.py templates
...
These templates had gotten slightly out of date through
manual edits. These changes make it so that running
generate_harness.py actually generates the desired files.
Changes to the non-template files are a result of the script's
alphabetization.
2017-01-04 22:26:02 -06:00
Roman Levenstein
ad0948a110
Merge pull request #6512 from djwbrown/djwbrown-reversed-benchmarks-only
...
[benchmark][prespecialize] Add benchmarks only for reversed iteration.
2017-01-04 19:38:19 -08:00
Dylan Brown
4355443f90
[benchmark][prespecialize] Add benchmarks only for reversed iteration.
...
Added ReversedCollections.swift to benchmark/single-source for
benchmarking of iterations through reversed collection types.
2016-12-30 20:26:54 +02:00
Nate Cook
95730e8726
[benchmark] Add test for sorting an already sorted array
2016-12-24 01:17:51 -06:00
ben-cohen
18487b4e71
new tests to benchmark main.swift
2016-12-18 19:31:30 -08:00
practicalswift
797b80765f
[gardening] Use the correct base URL ( https://swift.org ) in references to the Swift website
...
Remove all references to the old non-TLS enabled base URL (http://swift.org )
2016-11-20 17:36:03 +01:00
Karoly Lorentey
d751b83054
[benchmark][SR-3106] Add benchmarks implementing Observers four different ways
...
These benchmarks highlight optimization opportunities in the implementation
of partially applied methods and escaping closures.
# TEST SAMPLES MIN(μs) MAX(μs) MEAN(μs) SD(μs) MEDIAN(μs) MAX_RSS(B)
97 ObserverClosure 10 2547 2752 2599 0 2599 308317798
98 ObserverForwarderStruct 10 1345 1972 1480 0 1480 614535987
99 ObserverPartiallyAppliedMethod 10 3953 4194 4049 0 4049 267670733
100 ObserverUnappliedMethod 10 2990 3482 3093 0 3093 338796544
2016-11-01 22:27:08 +01:00
Ben Cohen
edbc41dc54
expanding append(contentsOf:) benchmarks
2016-10-28 09:47:50 -07:00
Ben Cohen
79f1880ca5
Add simple benchmark for append(contentsOf:)
2016-10-24 17:05:00 -07:00
Michael Gottesman
6c97be8eb6
[benchmark] Sort tests so that after generate_harness.py is rerun we do not get a diff due to sorting differences.
2016-09-23 19:12:00 -07:00