Commit graph

339 commits

Author SHA1 Message Date
Andrew Poelstra
0f9a38732c Merge 4ebe2f6e75 into merged_master (Bitcoin PR #18011) 2020-11-26 21:44:11 +00:00
Andrew Poelstra
853b831d64 Merge 400f45ec9b into merged_master (Bitcoin PR #19525) 2020-11-26 20:56:20 +00:00
Andrew Poelstra
714447c7f1 Merge 910a8d9c6f into merged_master (Bitcoin PR #19560) 2020-11-26 14:48:13 +00:00
Andrew Poelstra
3037b20323 Merge ea595d39f7 into merged_master (Bitcoin PR #19205) 2020-11-26 14:36:23 +00:00
Andrew Poelstra
8eb2701f0b Merge b763ae02a6 into merged_master (Bitcoin PR #16878) 2020-11-26 14:30:39 +00:00
Andrew Poelstra
66472b679f Merge f658c15bb9 into merged_master (Bitcoin PR #18434) 2020-11-26 01:09:06 +00:00
Andrew Poelstra
53ee9d62fd Merge 43695b0cf8 into merged_master (Bitcoin PR #19201) 2020-11-26 01:09:00 +00:00
Andrew Poelstra
437f74eaea Merge 2d7489be8f into merged_master (Bitcoin PR #18796) 2020-11-26 01:08:44 +00:00
Andrew Poelstra
d1fbd3b167 Merge fbd522721c into merged_master (Bitcoin PR #18885) 2020-11-26 01:08:38 +00:00
Andrew Poelstra
da37cc0993 Merge ac21090f20 into merged_master (Bitcoin PR #18629) 2020-11-26 01:08:32 +00:00
Andrew Poelstra
87d7c2cf71 Merge c90a9e6fff into merged_master (Bitcoin PR #18713) 2020-11-26 01:08:27 +00:00
Andrew Poelstra
fd37b7c5d6 Merge 54f812d9d2 into merged_master (Bitcoin PR #18673) 2020-11-26 01:08:23 +00:00
Andrew Poelstra
d4323bb589 Merge d486991aa5 into merged_master (Bitcoin PR #18295) 2020-11-26 01:08:15 +00:00
Andrew Poelstra
5a900129b7 Merge 6ec42df32b into merged_master (Bitcoin PR #18426) 2020-11-26 01:08:08 +00:00
Andrew Poelstra
db5ff988fa Merge 1277ca401a into merged_master (Bitcoin PR #18415) 2020-11-26 01:08:04 +00:00
Andrew Poelstra
1956e464aa Merge 3e50fdbe4e into merged_master (Bitcoin PR #18395) 2020-11-26 01:08:01 +00:00
Andrew Poelstra
bca8bce3b7 Merge caa2f3af29 into merged_master (Bitcoin PR #12134) 2020-11-26 01:07:42 +00:00
Andrew Poelstra
47d76259bf Merge 22d11187ee into merged_master (Bitcoin PR #17398) 2020-11-26 01:07:41 +00:00
Andrew Poelstra
77cefac5f9 Merge 2755b2b109 into merged_master (Bitcoin PR #18010) 2020-11-14 16:52:12 +00:00
Andrew Poelstra
6e9028ff6e Merge a3d198c93c into merged_master (Bitcoin PR #17863) 2020-11-14 16:52:11 +00:00
Andrew Poelstra
1b7df1d514 Merge 95ca6aeec7 into merged_master (Bitcoin PR #17691) 2020-11-14 16:52:08 +00:00
Andrew Poelstra
7c53615bb6 Merge af05bd9e1e into merged_master (Bitcoin PR #17891) 2020-11-14 16:52:07 +00:00
Andrew Poelstra
2048abd5df Merge 0655c7a94c into merged_master (Bitcoin PR #17787) 2020-11-14 16:52:02 +00:00
Andrew Poelstra
009bc2fdfb Merge 99813a9745 into merged_master (Bitcoin PR #17829) 2020-11-14 16:52:02 +00:00
Andrew Poelstra
e281d39855 Merge e6f167bfdf into merged_master (Bitcoin PR #17569) 2020-11-14 16:51:49 +00:00
Andrew Poelstra
434dfec482 Merge 7463181798 into merged_master (Bitcoin PR #17538) 2020-11-14 16:51:49 +00:00
Andrew Poelstra
bbc86542de Merge 03f6f408ab into merged_master (Bitcoin PR #17545) 2020-11-09 23:10:14 +00:00
Andrew Poelstra
1d3555cdaf Merge b05b28183c into merged_master (Bitcoin PR #16899) 2020-11-09 21:20:53 +00:00
Andrew Poelstra
78df750e14 Merge 917d3d9052 into merged_master (Bitcoin PR #17052) 2020-11-09 21:20:34 +00:00
Andrew Poelstra
eb174d36e9 Merge 45be44cce4 into merged_master (Bitcoin PR #15257) 2020-11-09 21:20:21 +00:00
Andrew Poelstra
2bc7beced3 Merge db67101c74 into merged_master (Bitcoin PR #16665) 2020-11-09 21:20:17 +00:00
Andrew Poelstra
f9ee0ba9d8 Merge c79bf32774 into merged_master (Bitcoin PR #16625) 2020-11-09 21:20:16 +00:00
Andrew Poelstra
799f59c303 Merge e6e99d4f75 into merged_master (Bitcoin PR #16408) 2020-11-09 21:20:07 +00:00
Andrew Poelstra
13fa126076 Merge 1088b90cba into merged_master (Bitcoin PR #16327) 2020-11-09 03:58:19 +00:00
Andrew Poelstra
29431d0295 Merge c84349a148 into merged_master (Bitcoin PR #16314) 2020-11-09 03:58:18 +00:00
Andrew Poelstra
62bfa13828 Merge e115a21f79 into merged_master (Bitcoin PR #16223) 2020-11-06 15:20:17 +00:00
Andrew Poelstra
413732c74d Merge 47d981e827 into merged_master (Bitcoin PR #16186) 2020-11-06 15:20:14 +00:00
Andrew Poelstra
94d71a40fe Merge 7524376a81 into merged_master (Bitcoin PR #16201) 2020-11-06 15:20:14 +00:00
Andrew Poelstra
6553838f2c Merge 6899ef3f0e into merged_master (Bitcoin PR #16143) 2020-11-06 15:20:14 +00:00
Andrew Poelstra
a914dbbeed Merge 26a0d07ddb into merged_master (Bitcoin PR #16130) 2020-11-06 15:20:12 +00:00
Andrew Poelstra
0360ec8cc1 Merge 79046d5749 into merged_master (Bitcoin PR #15939) 2020-10-29 15:24:41 +00:00
Andrew Poelstra
1b0aded1e7 Merge 2d4f70cabd into merged_master (Bitcoin PR #15838) 2020-10-28 20:43:33 +00:00
Andrew Poelstra
a2e1c09547 Merge 848ec5603f into merged_master (Bitcoin PR #15643) 2020-10-28 00:27:16 +00:00
Andrew Poelstra
a3f5c90edf Merge b83c6f7940 into merged_master (Bitcoin PR #15444) 2020-10-27 23:48:03 +00:00
Andrew Poelstra
b4c4f6eeb6 Merge 12408d33c6 into merged_master (Bitcoin PR #15549) 2020-10-27 23:21:07 +00:00
Andrew Poelstra
67d718b048 Merge a74d588f21 into merged_master (Bitcoin PR #14954) 2020-10-27 22:32:24 +00:00
Andrew Poelstra
edfdf46351 Merge 45f434f44d into merged_master (Bitcoin PR #15288) 2020-10-27 21:55:08 +00:00
Andrew Poelstra
d39ac16213 Merge 80112b17e7 into merged_master (Bitcoin PR #15296) 2020-10-27 20:57:06 +00:00
Wladimir J. van der Laan
4ebe2f6e75
Merge #18011: Replace current benchmarking framework with nanobench
78c312c983 Replace current benchmarking framework with nanobench (Martin Ankerl)

Pull request description:

  Replace current benchmarking framework with nanobench

  This replaces the current benchmarking framework with nanobench [1], an
  MIT licensed single-header benchmarking library, of which I am the
  autor. This has in my opinion several advantages, especially on Linux:

  * fast: Running all benchmarks takes ~6 seconds instead of 4m13s on
    an Intel i7-8700 CPU @ 3.20GHz.

  * accurate: I ran e.g. the benchmark for SipHash_32b 10 times and
    calculate standard deviation / mean = coefficient of variation:

    * 0.57% CV for old benchmarking framework
    * 0.20% CV for nanobench

    So the benchmark results with nanobench seem to vary less than with
    the old framework.

  * It automatically determines runtime based on clock precision, no need
    to specify number of evaluations.

  * measure instructions, cycles, branches, instructions per cycle,
    branch misses (only Linux, when performance counters are available)

  * output in markdown table format.

  * Warn about unstable environment (frequency scaling, turbo, ...)

  * For better profiling, it is possible to set the environment variable
    NANOBENCH_ENDLESS to force endless running of a particular benchmark
    without the need to recompile. This makes it to e.g. run "perf top"
    and look at hotspots.

  Here is an example copy & pasted from the terminal output:

  |             ns/byte |              byte/s |    err% |        ins/byte |        cyc/byte |    IPC |       bra/byte |   miss% |     total | benchmark
  |--------------------:|--------------------:|--------:|----------------:|----------------:|-------:|---------------:|--------:|----------:|:----------
  |                2.52 |      396,529,415.94 |    0.6% |           25.42 |            8.02 |  3.169 |           0.06 |    0.0% |      0.03 | `bench/crypto_hash.cpp RIPEMD160`
  |                1.87 |      535,161,444.83 |    0.3% |           21.36 |            5.95 |  3.589 |           0.06 |    0.0% |      0.02 | `bench/crypto_hash.cpp SHA1`
  |                3.22 |      310,344,174.79 |    1.1% |           36.80 |           10.22 |  3.601 |           0.09 |    0.0% |      0.04 | `bench/crypto_hash.cpp SHA256`
  |                2.01 |      496,375,796.23 |    0.0% |           18.72 |            6.43 |  2.911 |           0.01 |    1.0% |      0.00 | `bench/crypto_hash.cpp SHA256D64_1024`
  |                7.23 |      138,263,519.35 |    0.1% |           82.66 |           23.11 |  3.577 |           1.63 |    0.1% |      0.00 | `bench/crypto_hash.cpp SHA256_32b`
  |                3.04 |      328,780,166.40 |    0.3% |           35.82 |            9.69 |  3.696 |           0.03 |    0.0% |      0.03 | `bench/crypto_hash.cpp SHA512`

  [1] https://github.com/martinus/nanobench

ACKs for top commit:
  laanwj:
    ACK 78c312c983

Tree-SHA512: 9e18770b18b6f95a7d0105a4a5497d31cf4eb5efe6574f4482f6f1b4c88d7e0946b9a4a1e9e8e6ecbf41a3f2d7571240677dcb45af29a6f0584e89b25f32e49e
2020-07-30 15:34:17 +02:00
Wladimir J. van der Laan
65d0f1a533
devtools: Add security check for separate_code
Check that sections are appropriately separated in virtual memory,
based on their (expected) permissions. This checks for missing
-Wl,-z,separate-code and potentially other problems.

Co-authored-by: fanquake <fanquake@gmail.com>
2020-07-28 12:57:35 +08:00