aboutsummaryrefslogtreecommitdiff
path: root/src/bench
Commit message (Collapse)AuthorAgeFilesLines
* Modify chain consensus parameters to be height aware (#1396)Ross Nicoll2018-09-191-3/+1
| | | | | | | | | * Modify chain consensus parameters to be height aware * Correct implementation of simplified rewards in parameters * Correct max money * Use base block version in IsSuperMajority() instead of full version * Correct mining of blocks in AuxPoW tests * Add in missing pre-AuxPoW consensus checks
* bench: Fix initialization order in registrationWladimir J. van der Laan2017-02-072-9/+10
| | | | | | | | | | | | | | | The initialization order of global data structures in different implementation units is undefined. Making use of this is essentially gambling on what the linker does, the so-called [Static initialization order fiasco](https://isocpp.org/wiki/faq/ctors#static-init-order). In this case it apparently worked on Linux but failed on OpenBSD and FreeBSD. To create it on first use, make the registration structure local to a function. Fixes #8910.
* [trivial] Fix typos in commentspracticalswift2017-01-271-1/+1
|
* Merge #9498: Basic CCheckQueue BenchmarksWladimir J. van der Laan2017-01-191-0/+103
|\ | | | | | | | | aad4cb5 Address ryanofsky feedback on CCheckQueue benchmarks. Eliminated magic numbers, fixed scoping of vectors (and memory movement component of benchmark). (Jeremy Rubin) 9f03110 Add Basic CheckQueue Benchmark (Jeremy Rubin)
| * Address ryanofsky feedback on CCheckQueue benchmarks. Eliminated magic ↵Jeremy Rubin2017-01-111-15/+24
| | | | | | | | numbers, fixed scoping of vectors (and memory movement component of benchmark).
| * Add Basic CheckQueue BenchmarkJeremy Rubin2017-01-091-0/+94
| |
* | Merge #9353: Add data() method to CDataStream (and use it)Pieter Wuille2017-01-091-1/+1
|\ \ | | | | | | | | | | | | | | | | | | | | | 5113474 wallet: Use CDataStream.data() (Wladimir J. van der Laan) e2300ff bench: Use CDataStream.data() (Wladimir J. van der Laan) adff950 dbwrapper: Use new .data() method of CDataStream (Wladimir J. van der Laan) a2141e4 streams: Remove special cases for ancient MSVC (Wladimir J. van der Laan) af4c44c streams: Add data() method to CDataStream (Wladimir J. van der Laan)
| * | bench: Use CDataStream.data()Wladimir J. van der Laan2016-12-151-1/+1
| | |
* | | Merge #9138: Improve fee estimationPieter Wuille2017-01-051-1/+1
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 44b64b9 Fix edge case with stale fee estimates (Alex Morcos) 78ae62d Add clarifying comments to fee estimation (Alex Morcos) 5fe0f47 Add extra logging to processBlock in fee estimation. (Alex Morcos) dc008c4 Add IsCurrentForFeeEstimatation (Alex Morcos) ebafdca Pass pointers to existing CTxMemPoolEntries to fee estimation (Alex Morcos) d825838 Always update fee estimates on new blocks. (Alex Morcos) 6f06b26 rename bool to validFeeEstimate (Alex Morcos) 84f7ab0 Remove member variable hadNoDependencies from CTxMemPoolEntry (Alex Morcos) 60ac00d Don't track transactions at all during IBD. (Alex Morcos) 4df4479 Remove extraneous LogPrint from fee estimation (Alex Morcos)
| * | Remove member variable hadNoDependencies from CTxMemPoolEntryAlex Morcos2017-01-041-1/+1
| | | | | | | | | | | | Fee estimation can just check its own mapMemPoolTxs to determine the same information. Note that now fee estimation for block processing must happen before those transactions are removed, but this shoudl be a speedup.
* | | Merge #9281: Refactor: Remove using namespace <xxx> from bench/ & test/ sourcesMarcoFalke2017-01-052-13/+9
|\ \ \ | |/ / |/| | | | | 73f4119 Refactoring: Removed using namespace <xxx> from bench/ and test/ source files. (Karl-Johan Alm)
| * | Refactoring: Removed using namespace <xxx> from bench/ and test/ source files.Karl-Johan Alm2017-01-022-13/+9
| | |
* | | Merge #9283: A few more CTransactionRef optimizationsWladimir J. van der Laan2017-01-041-1/+1
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | 91335ba Remove unused MakeTransactionRef overloads (Pieter Wuille) 6713f0f Make FillBlock consume txn_available to avoid shared_ptr copies (Pieter Wuille) 62607d7 Convert COrphanTx to keep a CTransactionRef (Pieter Wuille) c44e4c4 Make AcceptToMemoryPool take CTransactionRef (Pieter Wuille)
| * | | Make AcceptToMemoryPool take CTransactionRefPieter Wuille2016-12-211-1/+1
| |/ /
* / / Increment MIT Licence copyright header year on files modified in 2016isle29832016-12-316-6/+6
|/ / | | | | | | | | | | Edited via: $ contrib/devtools/copyright_header.py update .
* | Merge #8589: Inline CTxInWitness inside CTxInWladimir J. van der Laan2016-12-211-3/+2
|\ \ | | | | | | | | | f6fb7ac Move CTxInWitness inside CTxIn (Pieter Wuille)
| * | Move CTxInWitness inside CTxInPieter Wuille2016-12-041-3/+2
| | |
* | | Merge #9262: Prefer coins that have fewer ancestors, sanity check txn before ↵Wladimir J. van der Laan2016-12-201-1/+1
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | | | | | | | ATMP cee1612 reduce number of lookups in TransactionWithinChainLimit (Gregory Sanders) af9bedb Test for fix of txn chaining in wallet (Gregory Sanders) 5882c09 CreateTransaction: Don't return success with too-many-ancestor txn (Gregory Sanders) 0b2294a SelectCoinsMinConf: Prefer coins with fewer ancestors (Gregory Sanders)
| * | SelectCoinsMinConf: Prefer coins with fewer ancestorsGregory Sanders2016-12-131-1/+1
| | |
* | | Refactor: Removed begin/end_ptr functions.Karl-Johan Alm2016-12-092-6/+6
| |/ |/|
* | Make CWalletTx store a CTransactionRef instead of inheritingPieter Wuille2016-12-021-1/+1
| |
* | Rename the remaining main.{h,cpp} to validation.{h,cpp}Matt Corallo2016-12-024-4/+4
| |
* | Move network-msg-processing code out of main to its own fileMatt Corallo2016-12-021-0/+1
|/
* bench: Add support for measuring CPU cyclesWladimir J. van der Laan2016-11-224-4/+118
| | | | | | | This adds cycle min/max/avg to the statistics. Supported on x86 and x86_64 (natively through rdtsc), as well as Linux (perf syscall).
* bench: Fix subtle counting issue when rescaling iteration countWladimir J. van der Laan2016-11-221-2/+5
| | | | | | | Make sure that the count is a zero modulo the new mask before scaling, otherwise the next time until a measure triggers will take only 1/2 as long as accounted for. This caused the 'min time' to be potentially off by as much as 100%.
* Use better name for local variable to prevent -Wshadow compiler warningPavel Janík2016-11-101-2/+2
|
* Add deserialize + CheckBlock benchmarks, and a full block hexMatt Corallo2016-11-092-0/+55
|
* [copyright] copyright header style uniformisle29832016-11-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | Three categories of modifications: 1) 1 instance of 'The Bitcoin Core developers \n', 1 instance of 'the Bitcoin Core developers\n', 3 instances of 'Bitcoin Core Developers\n', and 12 instances of 'The Bitcoin developers\n' are made uniform with the 443 instances of 'The Bitcoin Core developers\n' 2) 3 instances of 'BitPay, Inc\.\n' are made uniform with the other 6 instances of 'BitPay Inc\.\n' 3) 4 instances where there was no '(c)' between the 'Copyright' and the year where it deviates from the style of the local directory.
* bench: Add benchmark for lockedpool allocation/deallocationWladimir J. van der Laan2016-10-271-0/+47
|
* Add microbenchmarks to profile more code paths.Russell Yanofsky2016-10-184-0/+367
| | | | | | | | | | | | The new benchmarks exercise script validation, CCoinsDBView caching, mempool eviction, and wallet coin selection code. All of the benchmarks added here are extremely simple and don't necessarily mirror common real world conditions or interesting performance edge cases. Details about how specific benchmarks can be improved are noted in comments. Github-Issue: #7883
* Merge #8115: Avoid integer division in the benchmark inner-most loop.Wladimir J. van der Laan2016-05-312-14/+28
|\ | | | | | | 63ff57d Avoid integer division in the benchmark inner-most loop. (Gregory Maxwell)
| * Avoid integer division in the benchmark inner-most loop.Gregory Maxwell2016-05-302-14/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously the benchmark code used an integer division (%) with a non-constant in the inner-loop. This is quite slow on many processors, especially ones like ARM that lack a hardware divide. Even on fairly recent x86_64 like haswell an integer division can take something like 100 cycles-- making it comparable to the runtime of siphash. This change avoids the division by using bitmasking instead. This was especially easy since the count was only increased by doubling. This change also restarts the timing when the execution time was very low this avoids mintimes of zero in cases where one execution ends up below the timer resolution. It also reduces the impact of the overhead on the final result. The formatting of the prints is changed to not use scientific notation make it more machine readable (in particular, gnuplot croaks on the non-fixedpoint, and it doesn't sort correctly). This also hoists out all the floating point divisions out of the semi-hot path because it was easy to do so. It might be prudent to break out the critical test into a macro just to guarantee that it gets inlined. It might also make sense to just save out the intermediate counts and times and get the floating point completely out of the timing loop (because e.g. on hardware without a fast hardware FPU like some ARM it will still be slow enough to distort the results). I haven't done either of these in this commit.
* | Merge #8107: bench: Added base58 encoding/decoding benchmarksWladimir J. van der Laan2016-05-301-0/+56
|\ \ | | | | | | | | | 5fac1f3 bench: Added base58 encoding/decoding benchmarks (Yuri Zhykin)
| * | bench: Added base58 encoding/decoding benchmarksYuri Zhykin2016-05-271-0/+56
| |/
* / Benchmark SipHashPieter Wuille2016-05-281-0/+25
|/
* bench: Add crypto hash benchmarksWladimir J. van der Laan2016-05-111-0/+53
| | | | | | | | | | | Add benchmarks for the cryptographic hash algorithms: - RIPEMD160 - SHA1 - SHA256 - SHA512 Continues work on #7883.
* Benchmark rolling bloom filterPieter Wuille2016-04-281-0/+43
|
* [Trivial] ensure minimal header conventionsPhilip Kaufmann2015-10-272-11/+14
| | | | | | - ensure header namespaces and end comments are correct - add missing header end comments - ensure minimal formatting (add newlines etc.)
* Ignore bench_bitcoin binary.Pavel Janík2015-10-061-0/+1
|
* Support very-fast-running benchmarksGavin Andresen2015-09-303-3/+31
| | | | | | Avoid calling gettimeofday every time through the benchmarking loop, by keeping track of how long each loop takes and doubling the number of iterations done between time checks when they take less than 1/16'th of the total elapsed time.
* Simple benchmarking frameworkGavin Andresen2015-09-304-0/+166
Benchmarking framework, loosely based on google's micro-benchmarking library (https://github.com/google/benchmark) Wny not use the Google Benchmark framework? Because adding Even More Dependencies isn't worth it. If we get a dozen or three benchmarks and need nanosecond-accurate timings of threaded code then switching to the full-blown Google Benchmark library should be considered. The benchmark framework is hard-coded to run each benchmark for one wall-clock second, and then spits out .csv-format timing information to stdout. It is left as an exercise for later (or maybe never) to add command-line arguments to specify which benchmark(s) to run, how long to run them for, how to format results, etc etc etc. Again, see the Google Benchmark framework for where that might end up. See src/bench/MilliSleep.cpp for a sanity-test benchmark that just benchmarks 'sleep 100 milliseconds.' To compile and run benchmarks: cd src; make bench Sample output: Benchmark,count,min,max,average Sleep100ms,10,0.101854,0.105059,0.103881