[Tutor] __slots__

Liam Clarke ml.cyresse at gmail.com
Thu Oct 13 09:21:44 CEST 2005


On 10/13/05, Alan Gauld <alan.gauld at freenet.co.uk> wrote:
> > an object with 70ish attributes makes. FWIW, I'm doing the exact
> > opposite of XP, and building to handle 300,000 to 600,000 objects...
>
> As a matter of interest why do you need so many in RAM at once?
> Its very unusual to require that many and there are techniques to
> minimise the space by using 'phantom' objects and only pulling in
> the data as needed (so called 'late evaluation').
>
> If you tell us more about the problem context we might be able to
> help make the solution simpler.
>
> Alan G.
>

Hi Alan,

First off, may I say, don't do mathematics when tired. I've revised my
estimates.

Problem is a certain file. http://ipodlinux.org/ITunesDB

I'm creating an object for each header (for want of a better word.) A
song is described by an object with several children objects, each one
has certain attributes. Until I figure out a way to refactor this, I'm
working on layers of abstraction.

database object (contains controls, songs, podcasts, playlists etc)
^ ^ ^
composite objects (each object is composite of several base objects)
^^^^^^
base objects (objects derived from binary data)

^^^^^^^^^^
iTunesDB

I've got 400ish songs, and 40 playlists which equals about 5200
headers, and hence header objects. So, a 60Gb iPod can store .... err,
15,000 songs (assuming that an average mp3 is around 4Mb).

So then I did some wild guessing, and assuming that the ratio of songs
to playlists remained roughly the same, then I'll make another
assumption that the ratio of song & playlists to headers would also
remain the same, so playlists :songs  : headers is around
1 : 10 : 130. Each song is comprised of around minimum 3, can be 8/9
headers, each playlist is comprised of roughly 2n objects per song
listing, and a certain amount associated with the playlist.

(This is really rough). So, 15,000 songs equates to 1500 playlists
(including smart playlists) , and 180,000 objects/headers.

Now, I've thought about doing this various ways, but creating a
coherent and usable data structure while keeping the structure of the
binary file easily recreatable is what I'm after.

So, in doing so, I end up with a whole lot of objects, but it's a
whole lot of objects I can easily use.

I'll stick the code up on the web shortliesh, I'm refactoring the file
reading at the mo, as I initially wrote it only to read.

Regards,

Liam Clarke

PS Can you recommend a decent place for a hobbyist to learn about late
evaluation etc?


More information about the Tutor mailing list