Welcome to Johnny’s Software Lab, a blog for all interested in fast software written in C and C++. Your program doesn’t run fast enough? You need someone to talk to about your software’s performance? You or your team want to learn to write faster software? Whatever it is, we can help you. Check out the… Read| Johnny's Software Lab
We’ve discussed SIMD and vectorization extensively on this blog, and it was only a matter of time before SIMD (or vector) functions came up. In this post, we explore what SIMD functions are, when they are useful, and how to declare and use them effectively. A SIMD function is a function that processes more than… Read The post The messy reality of SIMD (vector) functions appeared first on Johnny's Software Lab.| Johnny's Software Lab
We’ve discussed SIMD and vectorization extensively on this blog, and it was only a matter of time before SIMD (or vector) functions came up. In this post, we explore what SIMD functions are, when they are useful, and how to declare and use them effectively. A SIMD function is a function that processes more than… Read| Johnny's Software Lab
Does it matter if we are compiling with optimizations off (O0) or optimizations on (O3) if the problem is memory bound? Let's find out... The post An optimizing compiler doesn’t help much with long instruction dependencies appeared first on Johnny's Software Lab.| Johnny's Software Lab
Copying data can be expensive in some cases, especially since it it doesn’t change the data, it’s just moves it. Therefore we, engineers interested in performance, want to avoid copying data as much as possible. We already talked about avoiding data copying in C++ earlier. In that post, we talked about what mechanism C++ has… Read The post Growing Buffers to Avoid Copying Data appeared first on Johnny's Software Lab.| Johnny's Software Lab
We debug our performance problem by simulating it with llvm-mca! The post Performance Debugging with llvm-mca: Simulating the CPU! appeared first on Johnny's Software Lab.| Johnny's Software Lab
Flamegraphs are great way to visualize resource consumption in your program and I am their big fan (I have written about them on two occasions – here and here). My biggest concern with flamegraphs is when the tooling is bad or missing: to create flamegraphs, you need to have a good profiler and a binary… Read The post FIYA – Flamegraphs in Your App appeared first on Johnny's Software Lab.| Johnny's Software Lab
This is the last memory optimization that we are covering in this blog. You can see the full list of all memory subsystem optimization that we covered earlier here. Definitely a read for anyone who is trying to improve performance of memory intensive software. In this post, we are covering a few remaining optimization techniques… Read The post Memory Subsystem Optimizations – The Remaining Topics appeared first on Johnny's Software Lab.| Johnny's Software Lab
In this post we investigate methods to speed up convergence loops - while loops that slowly converge to the correct result. The post Speeding Up Convergence Loops. Or, on Vectorization and Precision Control appeared first on Johnny's Software Lab.| Johnny's Software Lab
In this post we talk about memory mechanism that increase memory accesses latency and we explore the techniques to avoid them in latency-sensitive systems. The post Latency-Sensitive Application and the Memory Subsystem Part 2: Memory Management Mechanisms appeared first on Johnny's Software Lab.| Johnny's Software Lab
We explore performance of latency-sensitive application, or more specifically, how to avoid evicting your critical data from the data cache. The post Latency-Sensitive Applications and the Memory Subsystem: Keeping the Data in the Cache appeared first on Johnny's Software Lab.| Johnny's Software Lab
We investigate explicit software prefetching, a mechanism software developers can use to prefetch the data in advance so it is ready once the program needs it. The post The pros and cons of explicit software prefetching appeared first on Johnny's Software Lab.| Johnny's Software Lab
To contact us: E-mail: info[AT]johnnysswlab[DOT]com.WhatsApp: +381 65 3473 433Telegram: +381 65 3473 433LinkedIn Page: https://www.linkedin.com/company/johnysswlabX/Twitter: https://x.com/johnnysswlab Company Information Johny’s Software Lab LLCJovana Miodragovića 9/3911080 BeogradSerbia| Johnny's Software Lab
UPCOMING VECTORIZATION WORKSHOPSAVX Vectorization Workshop: 4 half days, May 26th to May 29th 11 AM – 3 PM (US East Coast) 8 AM – 12 PM (US West Coast) 5 PM – 9 PM CET (Europe)NEON Vectorization Workshop: TBD, send e-mail to info@johnnysswlab.com to express interest For software developers and companies who wish to learn… Read| Johnny's Software Lab