Great post!
Including a sneak peek of a certain profiler on a platform that is very much not Windows ;-)
@rovarma.bsky.social
Building Superluminal (https://www.superluminal.eu / @superluminal.eu), a user-friendly CPU sampling profiler for C/C++, Rust & .NET on Windows & consoles. Ex-Guerrilla Games (H:ZD)
Great post!
Including a sneak peek of a certain profiler on a platform that is very much not Windows ;-)
It's understandable that Unreal needs to touch a lot of files when starting the editor. But what if I told you that >5500 of those files are not needed for the editor to start at all and are just adding seconds to the editor launch time?
(Fix included!)
#u5 #gamedev
larstofus.com/2025/09/27/s...
to be fair, you could have seen this coming from the โruns inside the terminalโ as if that is something positive :p
23.09.2025 17:27 โ ๐ 3 ๐ 0 ๐ฌ 0 ๐ 0Nice investigation! Sampling profilers > instrumenting profilers when you need to see whatโs happening in code you *didnโt* write. Great example of the right tool for the job!
27.07.2025 16:42 โ ๐ 6 ๐ 1 ๐ฌ 2 ๐ 0My new blog post is there, and it's a bit different from usual: Fixing stutters in your own code is hard enough, but this time I try to fix performance issues in a closed-source game. No source code or debug symbols, but a lot of guesswork. larstofus.com/2025/07/27/p...
#gamedev
#Trackmania
Days since I've had to waste time debugging obscure issues caused by Linux's deranged shared library model: 0
"Nice that you're linking to a static library, but there's a shared lib loaded with the same symbol name in it, so I'm gonna use that one instead, ok?"
tfw you're collateral damage in the Great AI Wars
03.07.2025 14:11 โ ๐ 0 ๐ 0 ๐ฌ 0 ๐ 0This was a great example of "how hard can it be?". Well, 4 days of full-time work fighting with Qt, that's how hard.
So glad you like it! ;-)
It turns out when youโre writing code that runs on each sample interval to collect stacks, you donโt have a lot of time if youโre targeting high sampling rates :-)
25.06.2025 21:23 โ ๐ 2 ๐ 0 ๐ฌ 0 ๐ 0We've been micro-optimizing our eBPF code, and it reminds me of the SPU era a bit. The compiler/JIT is so basic that old tricks are useful again. Regular C turns into atrocious ASM, but writing C like it's ASM fixes it. I'm kinda loving it.
It's all stuff like this (before/after):
Solved it by the ancient tradition of Just Reading The Code.
Turns out continuously taking the RCU lock by inserting thousands of elements into a BPF_MAP_TYPE_LRU_HASH from within a NMI is Not Good for your system.
Rolled our own (simpler) version directly in eBPF.
How does one diagnose the entire Linux system locking up when using a particular eBPF data structure? Are there any post-mortem logs to look at? dmesg is only about the current session.
Asking for a friend.
In our case weโre looking at optimizing the perf of a single program, so an overview of which programs are running and how much time they cost is not that useful; we want to know which of the thousands of lines of code in *our* programs we need to focus on :-)
20.06.2025 10:55 โ ๐ 1 ๐ 0 ๐ฌ 0 ๐ 0And of course, it is as tedious as instrumentation-based profiling always is.
19.06.2025 21:10 โ ๐ 1 ๐ 0 ๐ฌ 1 ๐ 0Currently investigating & optimizing the perf of our eBPF-based capturing code, but there's no perf tooling for eBPF. So instead, we're profiling with manual instrumentation like savages. Ironically the very thing we originally set out to eliminate with Superluminal.
19.06.2025 21:10 โ ๐ 3 ๐ 0 ๐ฌ 1 ๐ 0Hell, I'm a developer, and most of the time I just give up when confronted with this crap.
07.04.2025 08:18 โ ๐ 1 ๐ 0 ๐ฌ 1 ๐ 0> visit website
> notice it isn't working
> open devtools
> 36 errors
I sometimes wonder how non-developers are supposed to use the internet nowadays. Are they just perpetually in a state of brokenness with no idea how to escape it, accepting this as 'normal'?
I havenโt used it on Windows so I donโt know if itโs any good, but my hope is currently for the Linux version of the RAD debugger (eventually). It can hardly be worse than the current options, so thereโs that.
04.04.2025 14:22 โ ๐ 2 ๐ 0 ๐ฌ 1 ๐ 0One thing people really like about Superluminal is that it Just Works, and weโre trying hard to get that same experience on Linux. 
But this platform sometimes really feels like itโs actively fighting against anything โjust workingโ and it would really prefer you Do The Work tyvm.
Youโre one of todayโs lucky 10000!
Though I am sad you went with the clearly inferior BC ๐
fwiw, we switched to mimalloc a few releases ago (and yes, it made a huge difference in qt perf), but we ran into allocator related crashes on Windows on Arm devices. Switched it back to the default allocator. I doubt that platform matters to you, but thought Iโd mention.
01.04.2025 18:07 โ ๐ 1 ๐ 0 ๐ฌ 1 ๐ 0Oof. Not wrong tho๐
01.04.2025 15:40 โ ๐ 0 ๐ 0 ๐ฌ 0 ๐ 0*cracks knuckles*
*starts writing Yet Another String Parser for Yet Another Commandline Tool*
Yeah, what David said, but substitute Araxis for BC instead :-) Youโre missing out with just the p4 tools; itโs not just about diffing changes.
01.04.2025 12:27 โ ๐ 1 ๐ 0 ๐ฌ 1 ๐ 0Yeah, thereโs nothing โwrongโ with it, I just canโt get used to it. Itโs fine for smallish diffs, but as soon as anything more structural is going on I canโt read it anymore with those big hatched blocks.
Funnily enough BC was the tool I started with and used to swear by, but I just cannot anymore.
Often find myself shelving on Linux and unshelving on Windows just to be able to use Araxis to review a change. Sigh.
31.03.2025 16:01 โ ๐ 1 ๐ 0 ๐ฌ 1 ๐ 0The thing I perhaps miss the most while developing on Linux, besides obviously a good debugger, is Araxis Merge. I've been using Beyond Compare since we started on Linux support, and I just *cannot* get used to it. The diff view is just completely unparseable to my brain.
31.03.2025 16:00 โ ๐ 3 ๐ 0 ๐ฌ 5 ๐ 01) what
27.03.2025 10:55 โ ๐ 4 ๐ 0 ๐ฌ 1 ๐ 0EINVAL, the "something went wrong" of the Linux kernel. 
What went wrong? Who knows, read the source!
Oh it is the first one, wifi/audio not working is just expected behavior. I would never bother debugging that, would just google for the magic commandline to fix it :P
And will do!