"Eric Mahurin" <eric_mahurin / yahoo.com> schrieb im Newsbeitrag news:20050501214236.96659.qmail / web41121.mail.yahoo.com... >> > Anybody know of any collection (i.e. Array/Hash) classes >> where >> > the keys and/or values can be assigned a fixed class? And >> for >> > classes that have variable length objects the length be >> also >> > potentially fixed across the collection? The main purpose >> of >> > doing this would be memory usage. You wouldn't have to >> store >> > the class (and possibly object length and pointer to >> allocated >> > space) per element and instead just have the raw data in >> the >> > collection. You would be able to get the same memory >> > utilization as C per element if done right. >> > >> > Here would be a few examples of what I'm talking about and >> how >> > much space per element it would take: >> > >> > - array of Floats (64 bits per element) >> > - array of N-bit integers (N bits per element) >> >> For numerics there is for narray: >> http://raa.ruby-lang.org/project/narray >> >> > - hash of 2-character strings (2*8 bits per key and Object >> per >> > value) >> > - array of array of 8 Floats (8*64 bits per line) >> >> There's also pack and unpack which can be used to implement >> this. >> >> > For dealing with large data structures, this could be >> > invaluable for memory usage. >> >> "could" or "is"? Do you really know that you need this or is >> this just >> guessing? > > > Thanks Robert and Christian. I think NArray will work for many > uses. You're welcome. > I still think a more general extension would be nice. And > Robert, I guess you might say I'm guessing. I'm new to ruby, > but from my perl usage, I know of many times I've dealt with > large amounts of data and would have wanted more C-like > efficiency. ;-) As Mark has demonstrated, you can stuff anything into a String with pack and unpack. Btw, Mark, if you factor out conversion to string and from string (hint traits), you have a generic implementation for any fixed size type. Maybe this should go somewhere into the std lib... Kind regards robert