I definitely understand that. I would honestly prefer to be able to memory map directly to the disk file and let the OS do the writes behind the scenes. Less potential for performance penalties that way. But I haven't found a way in Julia to do that. mmap_array obviously only takes arrays and not singular objects. I could, of course, mmap_array a type into an array of length 1. But the real problem is that composite types are handled as pointers, so mmap_array on a composite type results in the pointers being written to disk and not the actual data. Obvious problems abound with that.
I have had success in using mmap_array on immutable types, but the problem with that is that they are immutable. I need to be able to modify individual fields. In C, I can declare a struct, and then cast the pointer of the mmap function to the struct pointer. That doesn't seem to be an option in Julia. If there is another solution I haven't thought of yet, I'm all ears! On Tuesday, March 25, 2014 4:02:09 PM UTC-5, Patrick O'Leary wrote: > > On Tuesday, March 25, 2014 3:48:22 PM UTC-5, Keith Mason wrote: >> >> I have a number of variables based on composite types. I want the fields >> of these variables synced to disk, so that every time I modify a field, the >> data is written to disk. Is there any way to do this with assignment >> notation? >> > > As a more general note, hiding something as expensive as disk access > behind an overloaded `setfield!()` may make performance characteristics > less intuitive, and make tuning that performance--say, by batching > operations together--more difficult. Something to think about. >
