entagged-sharp vs. GStreamer

I finished rolling entagged-sharp into Sonance today after doing some more API work on entagged-sharp, thus replacing GStreamer for metadata collection. Sonance uses a metadata parser to collect metadata for songs not in its database. I deleted my library, and asked Sonance to import 4086 files. entagged-sharp processed 3920, which is… 100% of all the audio files in the group of 4086 files (most of the remaining files were JPEG album covers). GStreamer on the other hand, processed only 3777 of the 4086. However, this is because the differing 143 audio files were AAC, and I don’t have gstreamer-faad installed. So no hard feelings on GStreamer for coming in second on the count.

However! Entagged processed all 3920 files in 12 minutes and 11 seconds. GStreamer on the other hand only processed 3777 files… in 19 minutes and 33 seconds!

Entagged: 731 s / 3920 songs = .186 s / song
GStreamer: 1173 s / 3777 songs = .311 s / song
Winner: Entagged! Over 1.67 times faster!

Not only are there performance benefits with Entagged, it’s just easier to use. There are no dependencies! It’s pure C#, relying only on core .NET classes. It’s potentially easier to deal with from a legal standpoint as well. And what I’m really looking forward to, is that entagged-sharp has tons of room for optimization.

The tests weren’t too scientific, but I did make sure to be running only Sonance, and left the computer alone during the entire import for both tests. Also, I rebooted each time to flush everything out and be fair. For the curious, the tests were done on a T40p IBM ThinkPad, with a 1.6GHz processor (throttled to about 1GHz during the tests), and 1GB of RAM.

Also, I added basic MP4/AAC support to entagged-sharp two nights ago. The parser does not yet parse encoding/channel/stream information – just metadata. So if anyone knows a bit about MP4 and would like to contribute to the MP4 parser, it would be much appreciated! Please contact me if you’re interested. All I know is that the informtaion is in the MVHD (I think?) container, and I don’t have the time right now (nor will I for a while) to research this.


Furthermore, since this post is somewhat related to another Sonance timing test, I am happy to report that loading all 3920 files directly from the library (no file system intervention) takes only 2.5 seconds for the initial read from the SQL DB, and waaayyy under 1 second to reload the cached audio objects after the SQL DB read. I’m pretty happy with this improvement :)