{"push_id":2368486784,"size":6,"distinct_size":6,"ref":"refs/heads/master","head":"be263faf871f244b2302b927a775c421044de79e","before":"9e2ed253f50500e1db4927d511d3ac0d47aed8df","commits":[{"sha":"f0e7aa702095b22ba57a763c5c093e15d41586d1","author":{"name":"Evan Klitzke","email":"b56a73be3c8676ad8d455994d41c9be285e7858f@eklitzke.org"},"message":"Add new prevector benchmarks.\n\nThis prepares for a series of two additional commits which optimize\nprevector performance.","distinct":true,"url":"https://api.github.com/repos/yashbhutwala/bitcoin/commits/f0e7aa702095b22ba57a763c5c093e15d41586d1"},{"sha":"e46be25f0e19d574157752a5c0b674907a1578e6","author":{"name":"Akio Nakamura","email":"574fa816354b1009db437e7d9905969d65b0b9a9@dgtechnologies.co.jp"},"message":"Reduce redundant code of prevector and speed it up\n\nIn prevector.h, the code which like item_ptr(size()) apears in the loop.\nBoth item_ptr() and size() judge whether values are held directly or\nindirectly, but in most cases it is sufficient to make that judgement\nonce outside the loop.\n\nThis PR adds 2 private function fill() which has the loop to initialize\nby specified value (or iterator of the other prevector's element),\nbut don't call item_ptr() in their loop.\nOther functions(assign(), constructor, operator=(), insert())\nthat has similar loop, call fill() instead of original loop.\n\nAlso, resize() was changed like fill(), but it calls the default\nconstructor for that element each time.","distinct":true,"url":"https://api.github.com/repos/yashbhutwala/bitcoin/commits/e46be25f0e19d574157752a5c0b674907a1578e6"},{"sha":"5aad635b78c8359adae9b2af015b67b7325c0e0b","author":{"name":"Evan Klitzke","email":"b56a73be3c8676ad8d455994d41c9be285e7858f@eklitzke.org"},"message":"Use memset() to optimize prevector::resize()\n\nFurther optimize prevector::resize() (which is called by a number of\nother prevector methods) to use memset to initialize memory when the\nprevector contains trivial types.","distinct":true,"url":"https://api.github.com/repos/yashbhutwala/bitcoin/commits/5aad635b78c8359adae9b2af015b67b7325c0e0b"},{"sha":"e7d9fc5c5316a63917e076ca58a0b552ea0d56ae","author":{"name":"Sjors Provoost","email":"835808b55573ba31cadb0eb51d484750adf96093@sprovoost.nl"},"message":"[qt] navigate to  transaction history page after send\n\nThe transaction will be selected. When sending to multiple\ndestinations, all will be selected (thanks @promag).","distinct":true,"url":"https://api.github.com/repos/yashbhutwala/bitcoin/commits/e7d9fc5c5316a63917e076ca58a0b552ea0d56ae"},{"sha":"32987d5aebc4e0fb757ad77dc727e5d7ee9d394b","author":{"name":"Wladimir J. van der Laan","email":"c34e7a7f54ce6bae7e557bf240ec1aad7766c5ce@gmail.com"},"message":"Merge #12549: Make prevector::resize() and other prevector operations much faster\n\n5aad635 Use memset() to optimize prevector::resize() (Evan Klitzke)\ne46be25 Reduce redundant code of prevector and speed it up (Akio Nakamura)\nf0e7aa7 Add new prevector benchmarks. (Evan Klitzke)\n\nPull request description:\n\n  This branch optimizes various `prevector` operations, especially resizing vectors. While profiling the `loadblk` thread I noticed that a lot of time was being spent in `prevector::resize()` which led to this work. I have some data here indicating that it takes up **37%** of the time in `ReadBlockFromDisk()`: https://monad.io/readblockfromdisk.svg\n\n  This branch improves things significantly. For trivial types, the new results for the prevector benchmark are:\n\n   * `PrevectorClearTrivial` which tests `prevector::clear()` becomes 24.6x faster\n   * `PrevectorDestructorTrivial` which tests `prevector::~prevector()` becomes 20.5x faster\n   * `PrevectorResizeTrivial` which tests `prevector::resize()` becomes 20.3x faster\n\n  Note that in practice it looks like the prevector is only used to contain `unsigned char` types, which is a trivial type. The benchmarks are testing a bit of an extreme case, but the changes here are motivated by the profiling data for `ReadBlockFromDisk()` I linked to above.\n\n  The pull request here consists of a series of three commits:\n   * The first adds new benchmarks but does not change the prevector code.\n   * The second is from @AkioNak , and merges some prevector optimizations he submitted in #11988\n   * The third optimizes `prevector::resize()` to use `memset()` when the prevector contains trivially constructible types\n\nTree-SHA512: 28f7cbb91a19f9f43b6a5942781d7eb2e3197389186b666f086b69df12bee37773140f765426d715bfb8ebff79cb27a5f1206d0325b54b4aa65598b50fb18368","distinct":true,"url":"https://api.github.com/repos/yashbhutwala/bitcoin/commits/32987d5aebc4e0fb757ad77dc727e5d7ee9d394b"},{"sha":"be263faf871f244b2302b927a775c421044de79e","author":{"name":"Wladimir J. van der Laan","email":"c34e7a7f54ce6bae7e557bf240ec1aad7766c5ce@gmail.com"},"message":"Merge #12421: [qt] navigate to  transaction history page after send\n\ne7d9fc5 [qt] navigate to  transaction history page after send (Sjors Provoost)\n\nPull request description:\n\n  Before this change QT just remained on the Send tab, which I found confusing. Now it switches to the Transactions tab. This makes it more clear to the user that the send actually succeeded, and here they can monitor progress.\n\n  Ideally I would like to highlight the transaction, e.g. by refactoring `TransactionView::focusTransaction(const QModelIndex &idx)` to accept a transaction hash, but I'm not sure how to do that.\n\nTree-SHA512: 8aa93e03874de8434e18951f8aec47377814c0bcaf7eda4766fc41d5a4e32806346e12e4139e4d45468dfdf0b786f5a7faa393a31b8cd6c65ccac21fb3782c33","distinct":true,"url":"https://api.github.com/repos/yashbhutwala/bitcoin/commits/be263faf871f244b2302b927a775c421044de79e"}]}
{"actor":{"display_login":"yashbhutwala"}}