The Curious Engineer

All blogs / Performance / optimization

Random ASCII

randomascii.wordpress.com

Forecast for randomascii: programming, tech topics, with a chance of unicycling

Performance / optimizationWindows internalsDev tools / editors / IDEs

Posts
248 from 7 Nov 2009 to 11 Nov 2025
Posting
now and then (1 in the last year)
Kind
personal blog
Feed
https://randomascii.wordpress.com/feed/

2025 7

  1. Reflections on My Tech Career – Part 2
  2. Reflections on My Tech Career – Part 1
  3. Finding a VS Code Memory Leak
  4. Acronis True Image Costs Performance When Not Used
  5. Google Maps Doesn’t Know How Street Addresses Work
  6. What this blog is about
  7. Find me on bsky

2024 1

  1. Life, death, and retirement

2023 4

  1. Localization Failure: Temperature is Hard
  2. 32 MiB Working Sets on a 64 GiB machine
  3. When Debug Symbols Get Large
  4. No Start Menu for You

2022 7

  1. Compiler Tricks to Avoid ABI-Induced Crashes
  2. Please Restore Our Registers When You’re Done With Them
  3. Why Modern Software is Slow–Windows Voice Recorder
  4. Slower Memory Zeroing Through Parallelism
  5. 11 mm in 1.25 nanoseconds
  6. Determinism Bugs, Part Two, Kernel32.dll
  7. Two Deterministic Build Bugs

2021 5

  1. Windows Performance Analyzer, From Store or SDK
  2. Finding Windows HANDLE leaks, in Chromium and others
  3. Arranging Invisible Icons in Quadratic Time
  4. Windows Timer Resolution: The Great Rule Change
  5. Ditching WhatsApp

2020 11

  1. ARM and Lock-Free Programming
  2. Floating Point in the Browser, Part 3: When x+y=x (y != 0)
  3. Floating Point in the Browser, Part 2: Bad Epsilon
  4. Windows Timer Resolution: The Great Rule Change
  5. Floating Point in the Browser, Part 1: Impossible Expectations
  6. The Easy Ones – Three Bugs Hiding in the Open
  7. GDI leaks and the importance of luck
  8. What Outranks Thread Priority?
  9. Big Project Build Times–Chromium
  10. Creating a Public Symbol Server, Easily
  11. Bulk ETW Trace Analysis in C#

2019 7

  1. O(n^2), again, now in WMI
  2. Heap Snapshots–Tracing All Heap Allocations
  3. 63 Cores Blocked by Seven Instructions
  4. We Need a Carbon Tax, Now, That Goes Up Over Time
  5. Taskbar Latency and Kernel Calls
  6. O(n^2) in CreateProcess
  7. Exercises in Emulation: Xbox 360’s FMA Instruction

2018 12

  1. When Your Profiler Lies
  2. A Not-Called Function Can Cause a 5X Slowdown
  3. Making Windows Slower Part 2: Process Creation
  4. Commute Challenge 2018
  5. 24-core CPU and I can’t type an email (part two)
  6. 24-core CPU and I can’t type an email (part one)
  7. Making Windows Slower Part 1: File Access
  8. Compiler bug? Linker bug? Windows Kernel bug.
  9. Zombie Processes are Eating your Memory
  10. What We Talk About When We Talk About Performance
  11. What Would Jesus’s Resume Say?
  12. Finding a CPU Design Bug in the Xbox 360

2017 10

  1. Analyzing a Confusing Crash–Stack Walks Gone Bad
  2. Hey Synaptics, Can You Please Stop Polling!
  3. What is Windows *doing* while hogging that lock
  4. 24-core CPU and I can’t move my mouse
  5. The Spoils of Law (Moore’s Law)–a New Laptop
  6. Sometimes Floating Point Math is Perfect
  7. Commute Challenge 2017
  8. Traveling in Iran
  9. Delete an inline function, save 794 kB
  10. Add a const here, delete a const there…

2016 16

  1. Seattle to Portland on a Unicycle
  2. VC++ /arch:AVX option – unsafe at any speed
  3. CPU Performance Counters on Windows
  4. WPA Symbol Loading is Much Faster, but Broken for Chrome
  5. Vestibular Dysfunction, or, How I Went Half Deaf
  6. Everything Old is New Again, and a Compiler Bug
  7. ETW Flame Graphs Made Easy
  8. Zeroing Memory is Hard (VC++ 2015 arrays)
  9. DNA-Free Dining Made Easy
  10. UIforETW is No Longer a CPU Hog
  11. Compiler Bugs Found When Porting Chromium to VC++ 2015
  12. A modest proposal for a more natural KB
  13. Power Wastage On An Idle Laptop
  14. Cars in Canada Get Better Mileage than in the US
  15. Base Ten For (Almost) Everything
  16. Making a 4K Fractal Movie with Fractal eXtreme

2015 12

  1. Thread Naming in Windows: Time for Something Better
  2. ETW Central
  3. Xperf Basics: Recording a Trace (the ultimate easy way)
  4. New Xperf and new WPA in the new WPT
  5. Graph All the Things (Using WPT 10)
  6. Programming is Puzzles
  7. ETW Heap Tracing–Every Allocation Recorded
  8. UIforETW – Windows Performance Made Easier
  9. Profiling the profiler: working around a six minute xperf hang
  10. ETW Trace Compression (and xperf syntax refresher)
  11. Knowing Where to Type ‘Zero’
  12. Home Network Printer Setup That Works

2014 15

  1. Hidden Costs of Memory Allocation
  2. Slow Symbol Loading in Microsoft’s Profiler, Take Two
  3. Intel Underestimates Error Bounds by 1.3 quintillion
  4. A Crash of Great Opportunity
  5. ETW Training Videos Available Now
  6. Please Calculate This Circle’s Circumference
  7. Undefined Behavior *Can* Format Your Drive
  8. Buggy Security Guidance from Apple
  9. Self Inflicted Denial of Service in Visual Studio Search
  10. You Got Your Web Browser in my Compiler!
  11. Make VC++ Compiles Fast Through Parallel Compilation
  12. Making Compiles Slow Through Abuse of Templates
  13. Exercise Regimen for a 94 Year Old
  14. Process Tree from an Xperf Trace
  15. There are Only Four Billion Floats–So Test Them All!

2013 46

  1. Bugs I Got Other Companies to Fix in 2013
  2. Warm Weather Snowmen
  3. VC++ 2013 class Layout Change and Wasted Space
  4. std::min Causing Three-Times Slowdown on VC++
  5. Exporting Arbitrary Data from xperf ETL files
  6. New Version of Xperf–Upgrade Now
  7. Riding Fast on One Wheel–Ignite Talk
  8. Hard Drive Upgrade
  9. How to Report a VC++ Code-Gen Bug
  10. Debugging Optimized Code–New in Visual Studio 2012
  11. Vote for the VC++ Improvements That Matter
  12. Developers Rejoice Again
  13. Developers Rejoice–Windows 7 Stack Corruption Fixed!
  14. Geared Unicycle Engineering Challenges
  15. 50 Bytes of Code That Took 4 GB to Compile
  16. Defective Heat Sinks Causing Garbage Gaming
  17. The New WPA Xperf Trace Viewer–New Bugs and Old
  18. Floating-Point Determinism
  19. Windows Timer Resolution: Megawatts Wasted
  20. Verizon’s Poor Customer Service
  21. Two Years (and Thousands of Bugs) of Static Analysis
  22. Other Causes of Alt+Tab Problems
  23. Twitter
  24. VC++ /analyze Bug Finder Bug Fixed
  25. Basics of Digital Photo Organization
  26. Alt+Tab Bug Worsened by IE 10, But Fix Found
  27. timeGetTime versus GetTickCount
  28. Energy Drinks: With None Of That Pesky Energy
  29. Xperf for Excess CPU Consumption: WPA edition
  30. Xperf Basics: Recording a Trace (the easy way)
  31. Python Debugger Update
  32. Techniques for Zooming in Xperf Trace Viewers
  33. Stop using strncpy already!
  34. Sleep Variation Investigated
  35. Summarizing Xperf CPU Usage with Flame Graphs
  36. Counting to Ten on Linux
  37. Should This Windows 7 Bug be Fixed?
  38. Symbols the Microsoft Way
  39. Symbols on Linux update: Fedora Fixes
  40. Visual Studio Single Step Performance Fixes
  41. Symbols on Linux Part Three: Linux versus Windows
  42. Float Precision Revisited: Nine Digit Float Portability
  43. Symbols on Linux Part Two: Symbols for Other Versions
  44. Symbols on Linux Part One: g++ Library Symbols
  45. For the Wages of Blogging is…
  46. Top Eight Entertaining Blog Facts for 2012

2012 48

  1. The Surprising Subtleties of Zeroing a Register
  2. Windows Slowdown, Investigated, Identified, and Now Fixed
  3. Another Bug in Your Bug (Finder): __offsetof
  4. Riding Faster on One Wheel: Geared Unicycles
  5. The Lost Xperf Documentation–Disk Usage
  6. Comparing Memory is Still Tricky
  7. Out of Order Benefits
  8. Xperf Symbol Loading Pitfalls
  9. You’ve Got a Bug in Your Bug (Finder)
  10. Backin’ Up is Hard to Do
  11. Game Developer Magazine Floating Point
  12. Fractal eXtreme, now cheaper
  13. Windows Slowdown, Investigated and Identified
  14. Forgetfulness in Computers
  15. What the heck is amd64?
  16. Fixing another Photo Gallery performance bug
  17. Jetpacks and flying cars
  18. Gin and Tonic == Summer in a Glass
  19. More Adventures in Failing to Crash Properly
  20. When Even Crashing Doesn’t Work
  21. Doubles are not floats, so don’t compare them
  22. WPA–Xperf Trace Analysis Reimagined
  23. Myth: Mythbusters Can Do Math
  24. In Praise of Idleness
  25. Floating-Point Poetry
  26. Windows Live Photo Gallery—Poor Performance Peculiarities
  27. That’s Not Normal–the Performance of Odd Floats
  28. The Lost Xperf Documentation–CPU Usage (Precise)
  29. The Lost Xperf Documentation–CPU sampling
  30. The New Xperf is Here!
  31. Xperf Wait Analysis–Finding Idle Time
  32. Exceptional Floating Point
  33. iTunes, Fixed
  34. Floating-point complexities
  35. iTunes, iTunes, Why Hast Thou Forsaken Me?
  36. Fractal and Crypto Performance
  37. Population Estimation Through Murder Statistics
  38. Intermediate Floating-Point Precision
  39. C++ 11 std::async for Fast Float Format Finding
  40. Float Precision–From Zero to 100+ Digits
  41. Comparing Floating Point Numbers, 2012 Edition
  42. 64-Bit Made Easy
  43. Don’t Store That in a Float
  44. They sure look equal…
  45. Stupid Float Tricks
  46. Ssopa
  47. Tricks With the Floating-Point Format
  48. Top Ten Technologies of 2011

2011 42

  1. Fractal eXtreme New Version–Better Zoom Movies
  2. Increased Reliability Through More Crashes
  3. Really Deep Fractal Zoom Movie – Much Faster
  4. Faster Fractals Again
  5. A Tale of Two Call Stacks
  6. Source Indexing is Underused Awesomeness
  7. Alt+Tab Depth Inversion Bug
  8. Try /analyze for Free
  9. Dangerous Documentation Part 2–Printing Strings
  10. Dangerous Documentation Part 1–Copying Strings
  11. /analyze–Command Line Options
  12. Then and Now–Performance Improvements
  13. /analyze for Visual Studio-the Ugly (part 5)
  14. Faster Fractals Through Better Scheduling
  15. Xperf for Excess CPU Consumption
  16. Zune EULA Window Size Fail
  17. PowerPoint Poor Performance Problem
  18. Xperf Analysis Basics
  19. Xperf Resources
  20. /analyze for Visual Studio—the Ugly (part 4), False Negatives
  21. Xperf Basics: Recording a Trace
  22. Visual C++ Code-gen Deficiencies
  23. Faster Fractals Through Algebra
  24. /analyze for Visual Studio—the Ugly (part 3), False Positives
  25. Making VirtualAlloc Arbitrarily Slower
  26. rdtsc in the Age of Sandybridge
  27. /analyze for Visual Studio–the Ugly (part 2), False Negatives
  28. More Confusion with Percentages
  29. /analyze for Visual Studio–the Ugly (part 1)
  30. Visual C++ Debug Builds–”Fast Checks” Cause 5x Slowdowns
  31. Adventures with /analyze for Visual Studio–the Good
  32. Visual Studio Hangs “Occasionally”
  33. Percentages are Confusing
  34. Xperf and Visual Studio: The Case of the Breakpoint Hangs
  35. Remote Desktop Multimon – Just Kidding!
  36. “Performance Analyzer doesn’t process traces while elevated”
  37. Sandybridge and Scaling (of Performance)
  38. Source Control – Unable to Access Database
  39. x64 Instructions for Four Times Faster Math
  40. Poorly Designed LED Lamps Waste Power
  41. Photo Tagging Update
  42. MythBusters Math Mix-up

2010 2

  1. Photo Tagging with Windows Live Photo Gallery
  2. Bit-field Packing with Visual C++

2009 3

  1. A shout out to my Xbox 360
  2. Hello world
  3. Perfect Pikmin Video, Day 9