I've done some investigation into Play's performance, which, in the current version, is abominable. As best I can tell the slowdown is caused by the thousands (or more) Objective-C messages that come as part of Core Data and Cocoa Bindings on application startup as Play populates the UI. I perform pre-fetching and batch faulting, and I've determined that the performance hit is not coming from Core Data per se, but rather through the innumerable valueForKey: calls that come from the UI bindings.
I coded a test program using the latest version of sqlite directly. I was able to cobble together a window to which you can add MP3 files and create playlists. As a test I added 5,053 MP3 files to the "library" and it took 27.74 seconds. I'm using the term library loosely here because in the sample app a library is just a window that displays the streams and some of their metadata. But it any case, 27.74 seconds for 5,053 adds is quite an improvement. I think adding the same 5000 files to Play takes over 20 minutes.
So, I'll be switching from Core Data to sqlite for this application, purely for the performance enhancements I can realize.
Performance improvements
Great work!
Its noticeable faster for me, when adding Apple Lossless files to Play.
But I noticed one difference to the old system.
Add lots of files to Play at once, and it seems like its gone into a hang. Beach balling continuously until all files are added, and no sign of any files in Play. While the previous version add one file at a time in the main window as they are written into the database, and display the file number accordingly in the lower right.
Regression or feature?
Its noticeable faster for me, when adding Apple Lossless files to Play.
But I noticed one difference to the old system.
Add lots of files to Play at once, and it seems like its gone into a hang. Beach balling continuously until all files are added, and no sign of any files in Play. While the previous version add one file at a time in the main window as they are written into the database, and display the file number accordingly in the lower right.
Regression or feature?