Skip to content
HomeVideos
AllLongsCategoriesPlaylists
BooksBlogsPodcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K

    Plenary: Performance Matters - Emery Berger - CppCon 2020

    CppCon

    2 HN recommenders · recommended in 3 months, 2021–2022

    YouTube

    1:01:09 · 33K views · Sep 30, 2020

    Emery Berger's CppCon 2020 plenary on why performance is hard on modern hardware after the end of Dennard scaling. It covers benchmarking pitfalls and introduces new profiling tools for finding real bottlenecks.

    Recommended for treating benchmarking and profiling scientifically rather than by myth, with innovative tools.

    Software Engineering & LanguagesSoftware performance & optimizationC, C++, Rust, Go & systems languages
    1. 1:00:21
      CppCon 2019: Matt Godbolt “Compiler Explorer: Behind The Scenes”CppCon29K views • 7 years ago
    2. 31:19
      CppCon 2016: Nicholas Ormrod “The strange details of std::string at Facebook"CppCon122K views • 10 years ago
    3. 38:20
      Twitter and Visual Studio RantMolly Rocket158K views • 6 years ago
    4. 1:29:27
      The Forgotten Art of Structured Programming - Kevlin Henney [C++ on Sea 2019]cpponsea245K views • 7 years ago
    5. 1:12:27
      CppCon 2015: Andrei Alexandrescu “std::allocator...”CppCon196K views • 11 years ago
    6. 18:41
      Refterm Lecture Part 1 - Philosophies of OptimizationMolly Rocket93K views • 5 years ago
    7. 1:29:55
      Sorting Algorithms: Speed Is Found In The Minds of People - Andrei Alexandrescu - CppCon 2019CppCon184K views • 7 years ago
    8. 1:04:48
      "Performance (Really) Matters" with Emery BergerAssociation for Computing Machinery (ACM)7.1K views • 6 years ago
    9. 42:15
      "Performance Matters" by Emery BergerStrange Loop Conference502K views • 7 years ago
    10. 1:13:41
      CppCon 2014: Chandler Carruth "Efficiency with Algorithms, Performance with Data Structures"CppCon235K views • 12 years ago
    11. 1:29:54
      CppCon 2015: Chandler Carruth "Tuning C++: Benchmarks, and CPUs, and Compilers! Oh My!"CppCon188K views • 11 years ago
    12. 1:00:58
      CppCon 2017: Chandler Carruth “Going Nowhere Faster”CppCon113K views • 9 years ago
    13. 1:27:46
      CppCon 2014: Mike Acton "Data-Oriented Design and C++"CppCon863K views • 12 years ago
    14. 36:10
      CppCon 2019: Emery Berger “Mesh: Automatically Compacting Your C++ Application's Memory”CppCon15K views • 7 years ago
    15. 1:04:26
      CppCon 2018: G. Nishanov “Nano-coroutines to the Rescue! (Using Coroutines TS, of Course)”CppCon40K views • 8 years ago
    16. 55:42
      CppCon 2019: Matt Godbolt “Path Tracing Three Ways: A Study of C++ Style”CppCon77K views • 7 years ago
    17. 55:49
      CppCon 2016: Chandler Carruth “High Performance Code 201: Hybrid Data Structures"CppCon119K views • 10 years ago
    18. 1:33:02
      2013 Keynote: Chandler Carruth: Optimizing the Emergent Structures of C++CppNow34K views • 13 years ago
    19. 1:15:46
      CppCon 2017: Matt Godbolt “What Has My Compiler Done for Me Lately? Unbolting the Compiler's Lid”CppCon178K views • 9 years ago
    20. 1:00:07
      CppCon 2017: Carl Cook “When a Microsecond Is an Eternity: High Performance Trading Systems in C++”CppCon358K views • 9 years ago

    3 comments from Hacker News

    1. @jiggawattsJun 2021· in “Beware of Tight Feedback Loops (2020)”

      This guy has had a few talks at CppCon over the years, and covers the basics of how to attempt benchmarking with actual computer science instead of myth and voodoo rituals: this video In practice, it's not critical to go that far. In my experience, huge performance wins are trivial to benchmark with just a modicum of effort, and tiny performance wins are typically not worth any effort at all. At FAANG scale they might be, but I don't work at a FAANG, so not my problem! :) Simple methods I use and can recommend are: - Ideally, collect data from production, where the change behaves exactly as it would in production because it is production! - Interleave tests on the same machine. E.g.: A, B, A, B, A, B, etc... - Run tests on every machine you can get your hands on over an extended period and draw a histogram or a scatter chart of some sort. You don't have to do this at 100% load, it's actually better to mix this in with normal workloads. This gives you an idea of the noise versus signal, platform variance, variation due to time of day, etc... - Run tests after a cold boot to get a sense of worst-case performance instead of idealised and often unrealistic "hot loop" performance. - Run tests with different input sizes and draw a graph. Try find the explanation for every feature of the graph. - Be aware of every cache layer in the system. Don't forget about the potentially huge RAM or SSD cache of the storage subsystem. Typical SAN arrays now have 256 GB or more. The previous graph a

      RecommendsView on HN
    2. @captaincrowbarJan 2022· in “Finding your home in game graphics programming”

      The term you're looking for might be "abstraction penalty". For tools that can identify where the bottlenecks are, I recommend watching Emery Berger's talk "Performance Matters" from CppCon 2020 (either of the two links below should work). He introduces some innovative new profiling tools for this sort of analysis. this video [LINK]

      RecommendsView on HN
    3. @vanderZwanApr 2021· in “Surprisingly Slow”

      To give an oversimplified answer, that depends on how things are connected and synchronized. You know how bottlenecks are often explained using funnels in real life? Imagine two funnels, one directly connecting to another one. In that case, the effective rate of flow is determined by the funnel which has the smallest tip - the fact that the larger one lets through fluid quicker is irrelevant, as it is slowed down by the smaller one (we're obviously ignoring things like funnels potentially overflowing here, this is a simplified scenario). So then the bottleneck is easy to pin-point, but also it immediately becomes obvious that widening one funnel beyond the size of the other has no effect. Now let's change the scenario: I have a bucket of water that I tip into the first funnel, going into a second bucket. Once the second bucket is full I tip the second bucket into the second funnel, going into a third bucket. In this case both funnels have an impact on the time it takes to fill the second bucket, but the smaller one sill has the bigger impact. And then of course there is the parallel scenario, you can probably see how that plays out. In our software environment is a complicated mix of all of these, and it can be really hard to pin-point what is the most significant effect. The "buckets" and "funnels" translate to all kinds of things - CPU an I/O are the most obvious ones, but there's more to it than that. Also there's tons of side-effects that make this entire picture a lot mo

      CitesView on HN