Skip to content

Instantly share code, notes, and snippets.

@chadbrewbaker
Last active May 25, 2021 11:09
Show Gist options
  • Save chadbrewbaker/4a32de06ff7b3992ae5bb55546db17d5 to your computer and use it in GitHub Desktop.
Save chadbrewbaker/4a32de06ff7b3992ae5bb55546db17d5 to your computer and use it in GitHub Desktop.
Daniel Lemire notes

Daniel Lemire https://lemire.me/en/

Experimental vs asymptotic software engineering, Ullman's essay

Emery Berger

John Reghr

Denis' Book https://twitter.com/dendibakh/status/1328414554586443776 https://t.co/oTVC0C6tqW?amp=1

Hacker's Delight

Performance Summit

"Programming is social."

"Iteration over the internet ... combining ideas from different people over time"

Software conveys ideas.

Software allows independent peer review.

Create cost models in your mind's eye, then experiment. Measure constantly.

"People do not benchmark enough."

Benchmarking should become as common as unit tests.

Think in terms of possible data structures, rather than hyperfocus on the current data structure implemented.

Making software efficient is similar to making an engine efficient.

Profiling to tune lines can turn into headbanging. Benchmarking and trying new things allows for large gains.

Software co-evolves with hardware.

Open source is part of the college of software engineering.

Plotting performance over time, you can predict exponental growth in the near future.

We need better tools for performance engineering. Comparing performance between compilers is hard.

We need a tool for performance line by line mutation testing on complex codebases.

Benchmarking will happen more frequently if it runs fast.

Timing often has curves other than normal distributions.

Godbolt

We need tools that let people better understand what is going on.

Go benchmarking features.

C++ is gnarly. We need tools to know where there are copy constructors or bounds checking.

Programmers don't think enough about data layout and data flow.

Dislike for functional programming use of replacing simple loops with complex function composition.

Physical design of data layout should be first before programming.

Knuth books

Lex Friedman podcast - Jim Keller, Chris Lattner, David Patterson, Donald Knuth ...

Daniel's "Secret projects": Bloom filter, xor filter - better unicode validation

Marketing benefit of "secret" projects until they are ready for public showcase.


My personal musings.

  • Need for Godbolt style reports on open source builds.
  • Need llvm ir code coverage reports.
  • Could modify C++ STL for dumb printf logging using pound defines. Could be annotated with code coverage?
  • https://embed.cs.utah.edu/creduce/ + /usr/bin/time -v
@theWatchmen
Copy link

The "Black Book" is also a fascinating read. Albeit a bit out of date in practical terms, many of the same principles still apply today:
https://github.com/jagregory/abrash-black-book

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment