Commit Graph

237 Commits

Author SHA1 Message Date
Max Moiseev
c4e2b548dc [benchmark] Add a benchmark for .lazy.filter,map chaining...
... and functionally equivalent single call to .lazy.compactMap.

See https://forums.swift.org/t/introduce-lazy-version-of-compactmap/9835
for more info.
2018-03-20 11:54:18 -07:00
tbkka
848de7e84c Benchmark {Float,Double,Float80}.description (#15234)
* Benchmark {Float,Double,Float80}.description

This just tests how fast we can format the standard
floating-point types.  It also includes a test that
uses the result, to ensure that future optimized
_creation_ of the string doesn't incidentally pessimize
_use_ of the results.

* Benchmark {Float,Double,Float80}.description

This just tests how fast we can format the standard
floating-point types.  It also includes a test that
uses the result, to ensure that future optimized
_creation_ of the string doesn't incidentally pessimize
_use_ of the results.

* Add benchmarks for values close to 1 + other review suggestions
2018-03-15 14:09:35 -04:00
Tony Parker
130ce14f16 Merge pull request #15221 from parkera/parkera/data_benchmarks
Updated Data benchmarks
2018-03-15 09:01:18 -07:00
Tony Parker
19c6ccf5af Updated Data benchmarks 2018-03-13 17:29:50 -07:00
Karoy Lorentey
c2eccf2b4d [benchmark] Add benchmarks for Dictionary operations with quadratic behavior
Dictionary and Set currently exhibit O(n^2) behavior for certain operations involving copying elements in bulk. Add benchmarks to verify an upcoming fix and to catch regressions later.

https://bugs.swift.org/browse/SR-3268
2018-03-13 19:42:45 +00:00
Michael Ilseman
7f1ba5d22d Merge pull request #14992 from milseman/bench_builder
[benchmark] More StringBuilder/Interpolation benchmarks
2018-03-06 15:09:01 -08:00
Xiaodi Wu
7cb94890b4 Add binary floating-point properties benchmarks 2018-03-05 19:26:03 -06:00
Michael Ilseman
87b24738d8 [benchmark] Add string interpolation benchmarks
Add some benchmarks for when the whole interpolated string is small,
and when it is very large but every segment is pretty small.
2018-03-05 14:25:41 -08:00
Huon Wilson
2130ba9808 Revert "[benchmark] Add interpolation; more stable builder" 2018-03-01 19:05:10 -08:00
Michael Ilseman
959f45edc0 [benchmark] Add string interpolation benchmarks
Add some benchmarks for when the whole interpolated string is small,
and when it is very large but every segment is pretty small.
2018-02-28 19:15:42 -08:00
swift-ci
3956205f76 Merge pull request #14662 from airspeedswift/remove-where-benchmark 2018-02-15 17:17:56 -08:00
Ben Cohen
220883f20c Sequence algorithm benchmarks (#14663) 2018-02-15 16:07:00 -08:00
Ben Cohen
1e820dc505 Add benchmarks based on different remove(where:) implementations 2018-02-15 16:03:38 -08:00
Karoy Lorentey
ba978d3338 [benchmark] Add benchmark exercising the hash compression function 2018-02-08 15:19:22 +00:00
Ben Cohen
cfd322593c Add Queue benchmark that tests popLast generically and concretely (#14393) 2018-02-03 11:53:05 -08:00
Michael Ilseman
86e353a682 Revert "Try disabling CSV benchmarks to see if that unsticks PR benchmark runs" 2018-01-29 11:49:00 -08:00
ben-cohen
3c87fe0b20 Try disabling CSV benchmarks to see if that unsticks PR benchmark runs 2018-01-28 08:39:49 +00:00
Max Moiseev
ea38221ce6 Merge pull request #14043 from xwu/benchmark-doublewidth-division
[benchmark] Add DoubleWidth division benchmark
2018-01-22 12:54:29 -08:00
Michael Ilseman
7e58fd2cb5 [benchmark] Add two new CSVParsing alternative benchmarks.
The first is copied from https://github.com/apple/swift/pull/13930's
contribution (with a minor bug fix applied). The second is an
adaptation that tries to avoid creating copies and operate using
indices directly.
2018-01-21 18:07:07 -08:00
Xiaodi Wu
bc0e80634e [benchmark] Add DoubleWidth division benchmark 2018-01-20 23:59:17 -06:00
Xiaodi Wu
3887c59bb8 Add binary floating-point conversion benchmark 2018-01-15 16:11:19 -06:00
Michael Ilseman
d9fa4f5d0d [benchmark] More CharacterProperty variations 2018-01-08 13:05:23 -08:00
Karoy Lorentey
548878f733 Merge pull request #13731 from lorentey/romannumbers
[benchmark] Add roman numeral conversion benchmark
2018-01-08 19:27:11 +00:00
Karoy Lorentey
3312a22c1a Merge pull request #13725 from lorentey/wordcount
[benchmark] Add word counting benchmarks
2018-01-08 14:46:15 +00:00
Karoy Lorentey
6098fa4ac4 [benchmark] Add word counting benchmarks 2018-01-08 12:00:21 +00:00
Max Moiseev
861df1cdf9 Merge pull request #13770 from moiseev/pointer-arith-bench
[benchmark] Add a microbenchmark for the UnsafePointer.+
2018-01-06 16:42:03 -08:00
Michael Gottesman
24027067b9 [benchmarks] Add some more benchmarks by our very own airspeedswift.
With his permission of course.
2018-01-06 01:15:37 -05:00
Michael Ilseman
5eb699978a Merge pull request #13759 from milseman/csv_benchmarks
[benchmark] Hook up CSVParsing to suite
2018-01-05 21:22:05 -08:00
Max Moiseev
11f8f4c485 [benchmark] Add a microbenchmark for the UnsafePointer.+
UnsafePointer implementation contains the following note:

> Note: The following family of operator overloads are redundant with
Strideable. However, optimizer improvements are needed before they can
be removed without affecting performance.

... but it looks like there is no benchmark to support this claim.
2018-01-05 18:00:18 -08:00
Michael Ilseman
1eaf1f5571 [benchmark] Hook up CSVParsing to suite 2018-01-05 13:43:46 -08:00
Michael Ilseman
1c2954b133 [benchmark] Add a CharacterProperties benchmark 2018-01-05 11:27:36 -08:00
Karoy Lorentey
9e375bbce2 [benchmark] Add roman numeral conversion benchmark 2018-01-04 18:31:49 +00:00
Karoy Lorentey
9fef06e59c Merge pull request #12752 from hamishknight/dictionary-subscript-addressor
[stdlib] Use addressor for Dictionary's subscript(_:default:)
2017-12-04 15:04:29 +01:00
Lance Parker
4cad7535b7 Added comparison benchmarks
# Conflicts:
#	benchmark/single-source/StringComparison.swift
2017-12-01 16:54:08 -08:00
Hamish
f7015c2984 [stdlib] Added benchmarks for Dictionary's subscript(_:default:) 2017-11-19 15:45:27 +00:00
Max Moiseev
95cd5221f9 Remove a misleading comment 2017-10-04 14:54:04 -07:00
Max Moiseev
26c498c005 [benchmark] Add RangeIteration benchmarks 2017-10-04 14:50:29 -07:00
Max Moiseev
1dd9d61ded Move all benchmarks to use registerBenchmark and BenchmarkInfo 2017-10-03 18:04:56 -07:00
Max Moiseev
68cdba2df2 Use registerBenchmark for all benchmarks 2017-10-03 10:07:14 -07:00
Max Moiseev
528b3a0f3a [benchmark] Remove precommit/registered flags, add skipTags
The idea being, we need to decide what benchmarks to run solely based on
tags.

`--tag` allows to list all tags that are required;
`--skip-tags` allows to skip benchmarks that have any of those tags.

By default, skip-tags list contains .unstable and .String, which results
in the same subset of benchmarks as before.
2017-10-03 09:37:56 -07:00
swift-ci
a0a1a76cfe Merge pull request #12146 from gottesmm/add_support_for_initFunction 2017-09-28 11:05:52 -07:00
Michael Gottesman
8a69de7332 [benchmark] Have legacy tests use BenchmarkInfo and combine this with registered benches.
*NOTE* We always prefer a registered benchmark if we have one.

I am going to use BenchmarkInfo to solve the "create data for benchmark while we
are already timing" problem. I am going to add a field to BenchmarkInfo that if
it is not-null is called before we start measuring time. This closure can be
used to initialize any global data structures/etc.

But to do this, I need to be able to combine the registered and legacy
not-registered benchmarks.
2017-09-27 12:46:38 -07:00
Andrew Trick
a4f4b72e4e Stip .abstraction tag from most benchmarks.
Only use the .abstraction tag for benchmarks that are primarilly stressing the
optimization of a specific kind of abstraction. Then I can use these as CPU
benchmarks.

Previously this tag was applied to any benchmark that happened to involve
classes or protocols. When a compiler engineer changes something that might
affect codegen in these cases, they should simply benchmark the entire stable
suite. There's no value in having a separate set of 97 "abstraction" benchmarks
that are primarilly testing something else, like a stdlib API.
2017-09-27 11:06:10 -07:00
Michael Gottesman
77acbe82b7 [benchmark] Rename BenchmarkCategories => BenchmarkCategory.
This is an enum that represents a single category of benchmarks. Per the API
guidelines this should really be singular.
2017-09-26 19:28:34 -07:00
Michael Gottesman
7a188c6039 [benchmark] Add PrimsSplit a multi source version of the Prims benchmark.
This will enable us to at least validate on swift.org that the multisource
benchmark stuff is working.

rdar://34556274
2017-09-25 19:27:56 -07:00
Andrew Trick
3560ad2203 Register AnyHashableWithAClass benchmark. 2017-09-22 21:25:46 -07:00
Andrew Trick
e7edd270e5 Register PolymorphicCalls benchmark. 2017-09-22 21:11:30 -07:00
Andrew Trick
a6dcdfda29 Register SevenBoom benchmark. 2017-09-22 21:06:51 -07:00
Andrew Trick
d38e8da6a2 Register the LinkedList benchmark. 2017-09-22 20:51:46 -07:00
Andrew Trick
c0ffc0d451 Register the Exclusivity benchmark. 2017-09-22 20:43:23 -07:00