Commit Graph

202 Commits

Author SHA1 Message Date
Vedant Kumar
609c84b600 benchmark: Make building with debug info the default (#29669) 2020-02-06 11:03:20 -08:00
zoecarver
dbadd99b62 Add benchmark for devirtualization performance measurements 2020-02-03 15:20:59 -08:00
Cory Benfield
7e82b6fca6 [benchmark] Add HTTP2StateMachine benchmark 2019-11-19 21:10:24 +00:00
Cory Benfield
b43bfa88c0 [benchmark] Add ChaCha20-based performance benchmark
This patch adds a benchmark to the Swift benchmark suite based on the
ChaCha20 encryption algorithm.

As Swift evolves it is important that it tackles more and more features
and possible use cases. One of these great use-cases is low-level CPU
intensive code, and cryptographic algorithms are a really important
test-bed.

This benchmark therefore provides a real-world test case for Swift's
optimiser. My ideal outcome here is that Swift should be able to perform
as well at this benchmark as a naive equivalent C implementation.
2019-10-15 16:33:21 -07:00
Michael Gottesman
b4e25f9274 [benchmark] Add versions of prims that in a non-efficient way uses various forms of non-strong references.
Specifically, I add some benchmarks for weak, unowned, unsafe (unowned), and
unmanaged. The reason for the split in between unsafe (unowned) and unmanaged is
that one is testing the raw compiler features and the other is validating stdlib
performance.
2019-09-10 18:32:44 -07:00
Michael Gottesman
d128664244 Merge pull request #26744 from weissi/jw-bench-find-string
benchmark: add naive string finding
2019-08-29 19:02:04 -07:00
Johannes Weiss
f758d22ff7 benchmark: add naive string finding
FindStringNaive is a simple benchmark which implements a naive String
finding algorithm that currently shows a lot of ARC traffic, hopefully
to be reduced in the future.
2019-08-28 19:57:13 +01:00
Andrew Trick
7e9b46ee03 Add SortArrayInClass benchmark.
This currently copies the array each time it swaps elements. This
makes it 1500x slower than it should be to sort the array. The
benchmark now runs in 15ms but should be around 10us when fully
optimized.

This algorithm is an interesting optimization problem involving array
optimization, uniqueness, bounds checks, and exclusivity. But the
general first order problem is how to modify a CoW data structure
that's stored in a class property. As it stands, the property getter
retains the class property around the modify accesses that checks
uniqueness.
2019-08-15 16:32:37 -07:00
Pavol Vaskovic
22d7c289be Merge pull request #25310 from keitaito/string-benchmarks
[benchmark] Add ReplaceSubrange benchmark
2019-08-03 01:04:26 +02:00
Scott Perry
3e2e4f8b6f Clean up the Diffing and Diffing.Myers benchmarks 2019-07-16 14:39:16 -07:00
Scott Perry
0fc5d6ad31 Performance improvements and availability updates for Collection.difference(from:using:) 2019-06-26 16:55:29 -07:00
Keita Ito
459861b1d4 Rename ReplaceSubrange to StringReplaceSubrange 2019-06-11 00:03:21 -07:00
Keita Ito
0f6d56c9e6 Add ReplaceSubrange benchmark 2019-06-07 16:36:06 -07:00
Johannes Weiss
7226dca81f benchmark: NIOChannelPipeline imitation
adds a benchmark that imitates SwiftNIO's ChannelPipeline. Recently,
Swift master regressed on this benchmark, therefore I believe adding it
to Swift provides value as it seems to be different enough to the existing
benchmarks.
2019-05-14 21:03:03 +01:00
Patrick Pijnappel
150bcb0503 [benchmark] Add integer parsing benchmarks 2019-05-04 09:17:42 +10:00
Raj Barik
34fbbcc842 Merge pull request #24206 from rajbarik/raj-bench
Performance Benchmarking of ExistentialSpecializer
2019-04-26 08:55:29 -07:00
Raj Barik
2f32778de4 Performance Benchmarking of ExistentialSpecializer 2019-04-25 10:38:36 -07:00
Thomas Roughton
4b50c3ef3e [benchmark] Add a benchmark for floating point parsing performance 2019-04-24 13:31:23 +12:00
Slava Pestov
acd6c09b6b Revert "Performance Benchmarking of ExistentialSpecializer" 2019-04-17 13:31:32 -04:00
Raj Barik
cfc840920b Merge pull request #24065 from rajbarik/raj-es-perf-bench
Performance Benchmarking of ExistentialSpecializer
2019-04-16 22:33:26 -07:00
Raj Barik
78a0fe16be Performance Benchmarking of ExistentialSpecializer 2019-04-16 17:16:58 -07:00
Andrew Trick
b127216946 Benchmark cmake: Added SWIFT_BENCHMARK_USE_OS_LIBRARIES
Cleanup and document the configuration of the library path and rpath.

With SWIFT_BENCHMARK_USE_OS_LIBRARIES, it's now possible to directly
build benchmarks for a target device and run those benchmarks on the
device without building or installing Swift.

It's also possible now to specify an absolute SWIFT_LIBRARY_PATH to be
used as an rpath so installation can be skipped.
2019-04-10 09:31:02 -07:00
Patrick Pijnappel
06a2e6d5d2 [test] Add Range overlaps benchmark 2019-03-14 20:26:28 +11:00
Pavol Vaskovic
539f2cdcdf [benchmark] Remove DoubleWidthDivision (dead code) 2019-03-01 20:40:18 +01:00
Pavol Vaskovic
16af31a39b [benchmark] Remove HashQuadratic
This was obsoleted by DictionaryCopy.
2019-02-17 07:09:14 +01:00
Ben Cohen
779ea19a6a Revert count(where:) 2019-01-31 18:57:17 -08:00
David Smith
f85e1fee22 Generalize the JSON perf tests to Codable 2018-12-03 11:16:47 -08:00
David Smith
c129066b39 Add simple benchmarks for JSON coding 2018-11-29 17:41:50 -08:00
Karoy Lorentey
74eaea2a6a [benchmark] Add some benchmarks for String breadcrumbs (#20769)
[benchmark] Add some benchmarks for String breadcrumbs
2018-11-28 16:24:29 -08:00
Michael Gottesman
4d76ff9681 [benchmark] Add two benchmarks that show performance of flattening an array.
The first is a naive imperative approach using appends in a loop. The second
uses flatMap. We would like both of these to have equivalent performance.
2018-10-28 15:55:26 -07:00
Karoy Lorentey
f93dcf3dfa [benchmark] Add benchmark for [AnyHashable: Any] with String keys 2018-10-26 11:56:41 +01:00
Patrick Balestra
1c0778bb5b [benchmark] Add insert(_:Character) benchmark with ASCII and non-ASCII characters
Adds insert character benchmark with ASCII and non-ASCII characters
2018-10-24 18:55:20 -07:00
Andrew Trick
599e5860c5 Remove references to SWIFT3 from benchmark Cmake files. 2018-10-11 21:53:19 -07:00
Soroush Khanlou
5736cacc9a Add count(where:) and tests (#16099)
* add count(where:) and tests

* Revise count(where:) documentation

* Remove errant word in abstract

* add a benchmark for ranges and strings with help from @natecook1000

* update benchmark to use Array instead of Range
2018-09-13 12:37:06 -05:00
Kirill Chibisov
38db0d7ce2 Added benchmark for heapSort path of stdlib sort
This benchmark makes sorting benchmarks more complete. Now we
can measure all paths of stdlib sorting function.
2018-08-13 16:11:01 +03:00
Erik Eckstein
1a161c28ae benchmarks: compile with the new -align-module-to-page-size option, if supported by the compiler
To stabilize the benchmark results.
2018-07-27 17:15:14 -07:00
Erik Eckstein
53f2660e62 benchmarks: Convert the PartialApplyDynamicType into a lit test
This benchmark was added to test if the compiler crashes.
For some reason it was added as benchmark and not as lit test.
It has no value as benchmark anyway because the compiler optimizes away pretty much everything.
2018-07-25 11:32:23 -07:00
Daiki Matsudate
a3552f393e [stdlib] Add compactMapValues(_:) to Dictionary (#15017)
add compact map values on hashed collections
2018-07-14 22:35:16 -07:00
Karoy Lorentey
b954e6068d [benchmark] Add NSDictionary benchmarks for dictionaries bridged from Swift 2018-07-05 11:28:27 +01:00
Michael Gottesman
0a70ec336a [benchmark] Add swiftpm support for the benchmark suite.
This means that we can now edit benchmarks in Xcode! Keep in mind:

1. This is not an official build. It is just so we can use Xcode to edit files
and get IDE features.
2. I had to do a little hackery to keep the build the way it is today where all
single-source files are their own modules.
3. As long as we do not change the directory structure, everything should just
update and work since I added a little code that dynamically adds the tests.

Also, to do this I had to rename multi-source/PrimsSplit/main.swift =>
Prims_main.swift. That is because the name main.swift is special in some way and
I hit linker errors. By simply changing the name from main.swift =>
Prims_main.swift, everything is good. I am going to file a separate bug for
that.
2018-06-03 23:50:27 -07:00
Michael Gottesman
1124a37307 [benchmark] Add two low level Radix2CooleyTukey benchmarks. 2018-06-01 13:15:45 -07:00
Michael Gottesman
fab1630fdf Merge pull request #16874 from gottesmm/pr-4b615a53246f430a2aa930207041f82738eac2a3
[benchmark] Move build configuration/sdk configuration out of the main CMakeLists.txt file into AddSwiftBenchmarkSuite.cmake.
2018-05-28 20:51:37 -07:00
Michael Gottesman
9740bef838 [benchmark] Move build configuration/sdk configuration out of the main CMakeLists.txt file into AddSwiftBenchmarkSuite.cmake.
I am going to add some support here for Linux. I want to make sure that these
changes are hidden from the main CMakeLists.txt file since we want that file to
be as declarative as possible.

rdar://40541972
2018-05-28 18:39:43 -07:00
Michael Gottesman
61fa5d94ec [benchmark] Add some banners that show the organization of the file cmake file.
rdar://40541972
2018-05-28 18:39:42 -07:00
Michael Gottesman
d3778565ee [benchmark] Remove out of date comment. NFC. 2018-05-28 18:18:52 -07:00
swift-ci
fdc733c3cc Merge pull request #16862 from gottesmm/pr-9639bbef7f37872add1dd046cdf3a81b9682e021 2018-05-27 11:41:58 -07:00
Michael Gottesman
8a2c9bc715 Fix obvious typo... = /.
rdar://40541972
2018-05-27 18:12:33 +00:00
Michael Gottesman
4ddeba123d Merge pull request #16832 from gottesmm/pr-769c02db89f9caceec9c48e9e9f081fe78655b9a
[func-sig-opts][+0->+1] Add a benchmark that requires the optimizer t…
2018-05-24 22:57:03 -07:00
Michael Gottesman
0629afc3fe [func-sig-opts][+0->+1] Add a benchmark that requires the optimizer to propagate a +1 value from an opaque entry point through a simple linear call tree.
rdar://38196046
2018-05-24 18:12:05 -07:00
Michael Gottesman
1d5aca44f2 [func-sig-opts] Add a regression benchmark that shows overhead from +1->+0 without a corresponding +0->+1 optimization.
rdar://38196046
2018-05-24 16:16:42 -07:00