Measure Rust web application performance with this introductory tutorial and guide to several handy profiling tools.
Easy flamegraphs for Rust projects and everything else, without Perl or pipes <3 - flamegraph-rs/flamegraph
Measure Rust web application performance with this introductory tutorial and guide to several handy profiling tools.
A guy decides to overthink a simple question from his university's anonymous forum.
A technical blog about Rust, Linux and other topics.
An extremely fast Python linter and code formatter, written in Rust.
Up until a few years ago, Python tooling was a nightmare: basic tasks like installing packages or managing Python versions was a pain. The tools were brittle and did not work well together, mired in a swamp of underspecified implementation defined behaviour. Then, apparently suddenly, but in reality backed by years of ongoing work on formal interoperability specifications, we saw a renaissance of new ideas in the Python ecosystem. It started with Poetry and pipx and continued with tooling written in Rust like rye, which later got incorporated into Astral. Astral in particular contributed a very important piece to the puzzle: uv – an extremely fast Python package and project manager that supersedes all previous attempts; For example, it is 10x-100x faster than pip.
Recently, I wondered whether songs were being increasingly released with entirely lowercase titles. I ended up using MusicBrainz’ library as a datasource, which comes packaged up as a Postgres database, but the data source I considered initially was one of Discogs’ monthly data dumps, which is made available for download as a set of (gzipped) XML files. The file I was interested in – the releases dataset – is 11.62 GB gzipped, 74 GB once decompressed. I wanted to iterate through every record and check for (a) entry quality, and (b) whether the track title was lowercase. Normally I’d use some kind of serialization framework, gesture at the shape of data, and then tell the framework to deserialize the whole object, but - that’s not an option when the file you’re working with is several times the RAM on your computer.
software engineer in sydney, australia
Achieving 7000 msg/s (~6.7MB/s) with just 27MB of memory on a free t3.micro EC2 in AWS
Introduction to CoreNN, an open source vector database that scales to 1 billion vectors on a single machine with high recall and throughput.
Recently I’ve started working on a Rust application. Shortly after the first prototype was ready, I decided to profile it to make sure I didn’t make any horrible mistakes that could affect performance. Due to the nature of the application, I couldn’t just profile it locally (but if it was an option I’d use flamegraph). It needed to run in production (Kubernetes). So, I thought I should just use perf. bash1$ perf 2bash: perf: command not found Ok, it needs it be installed first. The internet says to run apt-get install linux-tools-generic. Sure thing… Oh no:
A tale of optimization for an algorithm that turns byte offsets into line and column numbers, and UTF-16 offsets. The final implementation leverages SIMD and fixes several inefficiencies in the original solution.
In this post, I’ll show how to profile a Rust web application.
Tackling the "The One Billion Row Challenge" in Rust, and optimizing it for maximum performance.
Owen's personal website and portfolio
One of the great aspects of working at a larger company like VMware is that there are programs like Take 3, designed to help people who meet certain criteria to take 3 months on a different project to learn new skills in other contexts and bring those skills and experience back to their team - rather than potentially looking elsewhere for a similar learning experience. This post documents my own recent learning experience of an exciting Take3 project at VMware, with the hope that others may be able to take up the opportunity to learn and bring new skills back to their teams.
Optimization is hard. And sometimes, the compiler makes it even harder.
Using flame graphs to remove a hot path, stop copying data and switching to a fast CRC32
Writing 585 MB/s with just 13MB of memory usage.