Multiplatform USB stick benchmark tools

Can you please give me directions to have a USB stick benchmark tool that can run on Windows and Ubuntu (and, if possible, iOS)?
I would like to compare and measure precisely the different speeds which, when detected “by eye”, look very different.
In practice I would like to verify the strong difference found in the use of the same usb flash drive on the same PC but with different operating systems (windows 10, windows 7 and Ubuntu and, if possible, iOS).
Thanks for your help

I’m not aware of any benchmarking utility of this kind that is multiplatform, but if you copy a large single file to your USB stick (e.g. a file of 1GB in size), you can then use a chronometer/stopwatch to measure how much time each one of such operating systems take in order to copy the entire file from your USB stick to their respective partitions.

It’s important to have in mind that data transfer isn’t only OS-dependent: it depends on a lot of factors, such as filesystem type (NTFS, FAT32, EXT4, ZFS, HFS+ etc.), storage media type (HD/hard disk, SSD/solid state drive, etc.), background tasks that may be running while you perform the benchmarking (each OS runs different background services and some of them were installed by you) etc. It’s quite complicated.

Hence, no matter if you use a multiplatform benchmarking utility or my suggestion of copying a big file from the stick to the computer, in both cases the benchmarking is going to sufer a lot of “noise”. I therefore suggest that you perform all benchmarks on the exactly same computer (as you mentioned that you intend to do), or do it on computers having the exactly same hardware and same hardware settings (same CPU, same GPU, same amount of RAM, RAM of the same frequency, same motherboard, same HD or SSD, same BIOS configuration etc.), otherwise your benchmarking isn’t going to make any sense at all.

Assuming that all these benchmarks are going to be performed on the exactly same computer (or computers with the exactly same hardware and hardware settings), it’s also recommended to perform the benchmarking on a “fresh” OS install, e.g. you format a partition and install Windows 7 on it and then perform the test (preferrably, perform it about 10 times and calculate the average copying time), because a fresh Windows 7 install will show you how the “clean” Windows 7 performs, then format this very same partition where you previously installed Windows 7 and then install Windows 10 on it, then perform the same test 10 times and calculate the average/mean copying time, then format it again and install Ubuntu and perform the same test 10 times.

You can use an OTG USB adapter in order to be able to connect your USB stick to the iPhone or iPad that is running iOS (you mentioned that you intend to run the test on the same PC, but iOS only runs on mobile devices, not on a PC). Keep in mind, though, that it’s better if you perform a factory reset on such mobile device before performing the benchmarking test, and even then it’s quite far from perfect, because such device won’t be the same where you installed Windows 7, Windows 10 and Ubuntu. It’s expected that such Apple mobile device has a hardware that is very similar to that of the PC, i.e. CPU with the same number of cores and threads and the same frequency per core, GPU (graphics processing unit / “video card”) with the same CPU and RAM capabilities, same type of media storage device (technically, the internal memory of the iPhone/iPad is a flash memory, therefore you should use an SSD on your PC, since SSD is a flash memory device, too) and so on.

You probably could create a simple script on any OS that would give you a very precise time measurement for copying a large file ie.

date/time command
copy file to stick
date/time command

As long as they run sequentially they should give you a very accurate measurement. You could even have it run in a loop so you can get an average time over multiple executions of the command.

Thanks for the very articulate answer.

1 Like

Copying a file provides indication of the times for sequential access (does not provide indication for random access)
Thanks for the answer anyway.

You can make that script as complex as you like. Copy a single large file to the stick, copy a series of files to the stick, copy the files back to the host machine. Copy that file, or those files, from the stick into volatile ram so that the time isn’t as reliant on the host’s file system (don’t ask me how to do this, I have no clue, but I’m guessing there is a way).

The only caveat is you have to keep it simple enough so that you can do it with a basic script on all three operating systems.

It might not be as definitive as a professional benchmark, but it should still give you a pretty good idea as to how fast your stick is on each system. And who knows, because you are doing something “real” with the script, it might be better than an artificial benchmark in some ways.

1 Like

This is new to me. As explained here and shortly discussed here, USB flash drives use the NAND technology, which provides sequential data access. The NOR technology (random access) is used in RAM memory cards, smartphones’ internal storage devices and computers’ CMOS chips to store the BIOS.

In a nutshell: NAND is sequential, NOR is random, USB sticks use NAND and are therefore sequential read/write devices. I’m thus under the impression that you’re trying to achieve something that is not possible: random access benchmarking of a sequential access device.

There are good tips already in the answers. I will only add that you should make sure that the buffers are flushed before you can consider the copying complete. Otherwise you may think the copying has finished when the copy command has copied the content to a buffer in RAM.

In Linux you can use the command sync for this purpose.

You can probably use sync also in MacOS, but I don’t know the corresponding command in Windows.

@sudodus Good point.

As mentioned here, there’s a Windows implementation of sync available here. But I don’t use Windows, so I didn’t test it.

1 Like