Remix.run Logo
pixl97 2 days ago

>they did absolutely zero benchmarking beforehand, just went with industry haresay, a

https://en.wikipedia.org/wiki/Wikipedia:Chesterton%27s_fence

It was a real issue in the past with hard drives and small media assets. It's still a real issue even with SSDs. HDD/SSD IOPS are still way slower than contiguous reads when you're dealing with a massive amount of files.

At the end of the day it requires testing which requires time at a time you don't have a lot of time.

the_af 2 days ago | parent | next [-]

This is not a good invokation of Chesterton's Fence.

The Fence is a parable about understanding something that already exists before asking to remove it. If you cannot explain why it exists, you shouldn't ask to remove it.

In this case, it wasn't something that already existed in their game. It was something that they read, then followed (without truly understanding whether it applied to their game), and upon re-testing some time later, realized it wasn't needed and caused detrimental side-effects. So it's not Chesterton's Fence.

You could argue they followed a videogame industry practice to make a new product, which is reasonable. They just didn't question or test their assumptions that they were within the parameters of said industry practice.

I don't think it's a terrible sin, mind you. We all take shortcuts sometimes.

imtringued 2 days ago | parent | prev [-]

It's not an issue with asynchronous filesystem IO. Again, async file IO should be the default for game engines. It doesn't take a genius to gather a list of assets to load and then wait for the whole list to finish rather than blocking on every tiny file.

pixl97 2 days ago | parent [-]

There are two different things when talking about application behavior versus disk behavior.

>wait for the whole list to finish rather than blocking on every tiny file.

And this is the point. I can make a test that shows exactly what's going on here. Make a random file generator that generates 100,000 4k files. Now, write them on hard drive with other data and things going on at the same time. Now in another run of the program have it generate 100,000 4k files and put them in a zip.

Now, read the set of 100k files from disk and at the same time read the 100k files in a zip....

One finishes in less than a second and one takes anywhere from a few seconds to a few minutes depending on your disk speeds.