Performance comparison - Pelagicore/tracker-ivi GitHub Wiki
This page contains rough comparisons of extraction speed between Tracker and Tracker-ivi. It should be noted that many factors have an effect on these numbers, especially since the software is run alongside other software in a Linux system. These numbers are intended to give a rough idea of expected performance improvements in Tracker-ivi.
Description of the host system
In order to carry out these comparisons, a minimal Linux installation was created using Yocto (https://www.yoctoproject.org/) and the Poky Linux distribution. The system contains the bare minimal dependencies required to run Tracker and Tracker-ivi with all multimedia extractors enabled.
The hardware used is a PandaBoard Rev A4, where media files are stored on a 32Gb USB2 Lexar USB drive.
Commands issued
# Launch a new D-Bus session
eval `dbus-launch --sh-syntax`
# Set the directory to index
gsettings set org.freedesktop.Tracker.Miner.Files index-recursive-directories "['/mnt/cf/generated_png']"
# Disable initial sleep
gsettings set org.freedesktop.Tracker.Miner.Files initial-sleep 0
# Mount the USB stick
mount /dev/sda1 /mnt/cf
# Empty the store and terminate any tracker-related processes
tracker-control -r
# Drop memory and disk-related caches
echo 3 > /proc/sys/vm/drop_caches
# Sync any writes queued up for connected storage devices
sync ; sync
# Measure the time required to index the specified directory
time /usr/lib/tracker/tracker-miner-fs -v 0 --no-daemon -d applications
Results
1000 randomly generated, 2.3 megabyte MP3 files, heavy on metadata
Extractor module | Run 1 | Run 2 | Run 3 | Run 4 | Run 5 | Database size |
---|---|---|---|---|---|---|
mp3-ivi | 18.176 | 17.792 | 17.560 | 18.090 | 17.060 | 836 Kb |
mp3 | 32.398 | 31.231 | 32.066 | 31.678 | 31.585 | 5880 Kb |
1000 replicated, 232Kb MP3 files, less metadata, artist is the same in all files
Extractor module | Run 1 | Run 2 | Run 3 | Run 4 | Run 5 | Database size |
---|---|---|---|---|---|---|
mp3-ivi | 13.768 | 13.784 | 13.755 | 14.025 | 14.261 | 452 Kb |
mp3 | 23.807 | 23.093 | 22.734 | 22.969 | 23.093 | 3196 Kb |
1000 randomly generated PNG files, 200Kb - 3Mb, heavy on metadata
Extractor module | Run 1 | Run 2 | Run 3 | Run 4 | Run 5 | Database size |
---|---|---|---|---|---|---|
png-faster-ivi | 14.522 | 14.443 | 14.162 | 13.786 | 14.037 | 1388 Kb |
png-faster | 20.738 | 20.812 | 21.035 | 20.519 | 21.220 | 5968 Kb |
png | 99.078 | 99.115 | 98.714 | 99.051 | 98.935 | 6008 Kb |
Some comments on these numbers..
The differences in database size between ivi and non-ivi extractors have two causes:
- The ivi extractors actually do store less data. This should not make an enormous difference however, since the size metadata contained in a typical file seldom exceeds 1Kb, and only some fields are skipped, while the majority is included.
- The multimedia ontologies have been replaced by the ivi ontology (see Stripped ontologies), which is non-hierarchical and uses the simplest data types possible.
The difference in running time between png and png-faster is due to the fact that the png extractor needs to read and discard all image data, which is slow over USB2. This is due to a design choice in the PNG library used. png-faster skips over the bulk of the PNG file, thereby transferring less data.
The overall difference in speed between ivi and non-ivi extractors is due to the ivi ontologies being much simpler (which makes them less extensible and less interoperable, but this is fine for our purposes).