-
Recent Posts
Categories
- AltDevBlogADay
- Bugs
- Chromium
- Code analysis
- Code Reliability
- Commuting
- Computers and Internet
- Debugging
- Documentation
- Drinks
- Environment
- Floating Point
- Fractals
- Fun
- Gaming
- Investigative Reporting
- Linux
- Math
- memory
- Performance
- Programming
- Quadratic
- Rants
- Security
- Symbols
- Travel
- uiforetw
- Uncategorized
- Unicycling
- Visual Studio
- WLPG
- Xbox 360
- xperf
Follow me on Twitter
My TweetsMeta
Category Archives: Programming
63 Cores Blocked by Seven Instructions
I seem to have a habit of writing about super powerful machines whose many cores are laid low by misuse of locks. So. Yeah. It’s that again. But this one seems particularly impressive. I mean, how often do you have … Continue reading
Posted in Investigative Reporting, Performance, Programming, Quadratic, uiforetw, xperf
Tagged ETW, ntfs, wpa
12 Comments
When Your Profiler Lies
Last week I wrote about the performance consequences of inadvertently loading gdi32.dll into processes that are created and destroyed at very high rates. This week I want to share some techniques for digging deeper into this behavior, and the odd … Continue reading
Posted in Investigative Reporting, Performance, Programming, uiforetw, xperf
Tagged GDI, process shutdown, UserCrit
12 Comments
A Not-Called Function Can Cause a 5X Slowdown
Subtitle: Making Windows Slower Part 3: Process Destruction In the summer of 2017 I wrestled with a Windows performance problem. Process destruction was slow, serialized, and was blocking the system input queue, leading to repeated short mouse-movement hangs when building … Continue reading
Posted in Investigative Reporting, Performance, Programming
Tagged GDI, process shutdown, UserCrit
Leave a comment
Making Windows Slower Part 2: Process Creation
Windows has long had a reputation for slow file operations and slow process creation. Have you ever wanted to make these operations even slower? This weeks’ blog post covers a technique you can use to make process creation on Windows … Continue reading
Posted in Code Reliability, Investigative Reporting, Performance, Programming, Quadratic
Tagged Application Verifier, crashing, pageheap
7 Comments
Making Windows Slower Part 1: File Access
Windows has long had a reputation for slow file operations and slow process creation. Have you ever wanted to make these operations even slower? This weeks’ blog post covers a technique you can use to make all file operations on … Continue reading
Posted in Investigative Reporting, Performance, Programming, xperf
Tagged FileSystemWatcher, notifications, Windows
18 Comments
Compiler bug? Linker bug? Windows Kernel bug.
See the end of the post for an October 2018 bug fix update, or read the whole story: Flaky failures are the worst. In this particular investigation, which spanned twenty months, we suspected hardware failure, compiler bugs, linker bugs, and … Continue reading
Posted in Debugging, Investigative Reporting, Programming
Tagged ETW, kernel, linking, Windows
57 Comments
Zombie Processes are Eating your Memory
Zombies probably won’t consume 32 GB of your memory like they did to me, but zombie processes do exist, and I can help you find them and make sure that developers fix them. Tool source link is at the bottom. … Continue reading
Posted in Debugging, Investigative Reporting, Performance, Programming, Rants
Tagged handles, leaks, zombies
74 Comments
Delete an inline function, save 794 kB
In the previous episode of “Simple Changes to Shrink Chrome” I discussed how deleting ‘const’ from a few key locations could lead to dramatic size savings, due to a VC++ compiler quirk. In this episode I’ll show how deleting an … Continue reading
Add a const here, delete a const there…
Update, February 2019: Two years later the VC++ bug I reported here still exists, even in VS 2019 preview. However Chromium no longer builds with VC++ so I’m reverting the changes where I deleted const in order to make some … Continue reading
VC++ /arch:AVX option – unsafe at any speed
Microsoft’s VC++ compiler has an option to generate instructions for new instruction sets such as AVX and AVX2, which can lead to more efficient code when running on compatible CPUs. So, an obvious tactic is to compile critical math-heavy functions … Continue reading