← Back to team overview

pytagsfs team mailing list archive

pytagsfs benchmarking


Hello everybody !

A long time ago, i've contacted Forest about a quick'n dirty tool to bench
the mounting time of pytagsfs but i didn't send anything to him due to a
lack of time, shame on me ! I've made some cleanup to the original code and
put it on a git repository.

You can find it here : git clone git://jbdenis.net/git/pytagsfs-tests.git
After that, you can launch a benchmark : ./bench_pytagsfs.py 0 1000 100
--gnuplot test.png

The last bench will run a mounting time benchmark for an empty file tree,
100 files, 200 files, ...., 1000 files. The fake file tree is created in a
temporary directory and wiped out at the end of the program.

The benchmark use a fake music tree generator (using markov chains for quite
coherent strings), which can also be used on the command line :
$ ./create_fake_music.py -T 1000 music (will create a files tree in "music"
directory with 1000 tracks in it, organized in artist/album/tracks

You can also specify the number of artists, albums and tracks per album
instead of a total number of tracks. The generated files are valid flac
files with coherent tags with a minimal size (about 1.2K on the disk).

This benchmark does nothing more than timing the mounting time of a fake
music tree. You can directly output a gnuplot image graph if you want.

It looks like that up to 20000 files, the pytagsfs mounting time is quite
linear. After that, it looks exponential with a shallow curve.
I don't think the startup time needs improvements, it takes time that's all.

Those tools are useful to me, it allows me to evaluate the performance of
different tools (mpd, pytagsfs and others) depending on the location of my
music files (local, nas, internet) without having to transfer them each
time. Feel free to do whatever you want with them.

pytagsfs is a great piece of software. I think that data persistance between
runs is the missing thing for widespread adoption and world domination ;)

Thank you for pytagsfs and for sharing your work.


Attachment: output-1000.png
Description: PNG image

Attachment: output-10000.png
Description: PNG image

Attachment: output-100000.png
Description: PNG image

Attachment: output-10000-30000garbage.png
Description: PNG image

Follow ups