perf-book
compiler-explorer
perf-book | compiler-explorer | |
---|---|---|
9 | 198 | |
1,915 | 15,483 | |
- | 1.8% | |
9.4 | 9.9 | |
3 days ago | 4 days ago | |
TeX | TypeScript | |
Creative Commons Zero v1.0 Universal | BSD 2-clause "Simplified" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
perf-book
-
Ask HN: How can I learn about performance optimization?
Denis Bakhvalov has some great resources for this:
1. His free course: https://products.easyperf.net/perf-ninja
2. His free book: https://book.easyperf.net/perf_book (the 2nd edition is being worked on right now and there's a draft on github: https://github.com/dendibakh/perf-book)
- Performance Analysis and Tuning on Modern CPU
- Performance.Analysis.and.Tuning.on.Modern.CPUs.Q1.2023.pdf
- Resources to learn the algorithms / hardware optimizations?
-
Free e-Book: "Performance Analysis and Tuning on Modern CPUs"
Here is the github repo of the book.
- Perf-Book: Performance Analysis and Tuning on Modern CPU
- "Performance Analysis and Tuning on Modern CPU" by Denis Bakhvalov
compiler-explorer
-
Ask HN: Whats State of the art for Code Sandboxing? (2024)
This is probably not helpful, but, can you figure out the infra of https://godbolt.org/ and follow what they have done?
-
New telescope images of Jupiter's moon Io rival those from spacecraft
https://godbolt.org/
Not only will it show you how C/C++/Rust, etc... language statements map to CPU instructions, but it can also show you how CPUs execute those instructions! There are advanced views that show the various pipeline stages, execution ports, etc...
E.g.: https://godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(filename...
The right-most tab should show you the CPU execution pipeline
-
Ask HN: Going low-level – what to learn next?
What you're basically after is some "Tooling and Methodology" studies for embedded. You've got the basics, but now you need to learn some more tools and the methods that make those tools really useful to the embedded/low-level context.
Some simple things you can do:
* Get yourself a suitable embedded development system - I would recommend anything ESP32'ish that suits your fancy such as a Liligo or Watchy ESP32-based watch, or PineTime if thats more up your alley - and then write some little apps for it.
* Get to know Godbolt with a great deal of intimacy, just as a general approach to understanding what is going on:
https://godbolt.org/
* Invest a little workbench time in some of the various embedded frameworks out there - platformio, FreeRTOS, etc. and, very important: learn the Tooling And Methodology techniques that these frameworks manifest.
* Invest some workbench time in the RETRO Computing Scene. Seriously, you can still learn extremely valuable principles of tooling and methodology from an 8-bit retro system from the 80's. Get your favourite platform, get all its tools onboard, engage with its community - you will learn a lot of things that are still entirely relevant, in spite of the changes over the decades.
* Get into the F/OSS tooling/methdology flow - find software projects that are interesting to you, find their repositories, learn to clone and build and test locally, and so on. There are so many fantastic projects out there for which low-level skills can be developed/fostered. Get onboard with something that interests you.
Good luck!
- Compiler Explorer
-
C++: freeing resources in destructors using helper functions
Now, let's figure out what the issue is. We'll use the synthetic code and the Compiler Explorer website to quickly explore how the code works.
-
Enlightenmentware
I would say the compiler explorer[0] fits the definition perfectly. It may seem like a straightforward piece of software, but it has immensely changed the way people discuss and share knowledge around compilers and performance optimization.
I regularly feel the impact on the quality of forum discussions. There's a lot less speculation about if "call X gets inlined", or "Y gets vectorized". Bold claims can be supported or disproven quickly by sharing a link.
And then you have tools like llvm-mca[1] or uiCA[2], if you don't mind going into the weeds.
[0] https://godbolt.org/
[1] https://llvm.org/docs/CommandGuide/llvm-mca.html
[2] https://uica.uops.info/
-
Gio UI – Cross-Platform GUI for Go
Sure, here you go:
https://godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(filename...
-
What if null was an Object in Java?
At least on android arm64, looks like a `dmb ishst` is emitted after the constructor, which allows future loads to not need an explicit barrier. Removing `final` from the field causes that barrier to not be emitted.
https://godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(filename...
- Ask HN: Which books/resources to understand modern Assembler?
-
3rd Edition of Programming: Principles and Practice Using C++ by Stroustrup
You said You won't get "extreme performance" from C++ because it is buried under the weight of decades of compatibility hacks.
Now your whole comment is about vector behavior. You haven't talked about what 'decades of compatibility hacks' are holding back performance. Whatever behavior you want from a vector is not a language limitation.
You could write your own vector and be done with it, although I'm still not sure what you mean, since once you reserve capacity a vector still doubles capacity when you overrun it. The reason this is never a performance obstacle is that if you're going to use more memory anyway, you reserve more up front. This is what any normal programmer does and they move on.
Show what you mean here:
https://godbolt.org/
I've never used ISPC. It's somewhat interesting although since it's Intel focused of course it's not actually portable.
I guess now the goal posts are shifting. First it was that "C++ as a language has performance limitations" now it's "rust has a vector that has a function I want and also I want SIMD stuff that doesn't exist. It does exist? not like that!"
Try to stay on track. You said there were "decades of compatibility hacks" holding back C++ performance then you went down a rabbit hole that has nothing to do with supporting that.
What are some alternatives?
{fmt} - A modern formatting library
rust - Empowering everyone to build reliable and efficient software.
format-benchmark - A collection of formatting benchmarks
papers - ISO/IEC JTC1 SC22 WG21 paper scheduling and management
rustc_codegen_gcc - libgccjit AOT codegen for rustc
firejail - Linux namespaces and seccomp-bpf sandbox
bubblewrap - Low-level unprivileged sandboxing tool used by Flatpak and similar projects
QEMU - Official QEMU mirror. Please see https://www.qemu.org/contribute/ for how to submit changes to QEMU. Pull Requests are ignored. Please only use release tarballs from the QEMU website.
arewefastyet - arewefastyet.rs - benchmarking the Rust compiler
OpenBLAS - OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
bevy - A refreshingly simple data-driven game engine built in Rust
Rust-for-Linux - Adding support for the Rust language to the Linux kernel.