john daniel wrote:I think most people take up more space than that for icons on buttons.Right. But this will be considerably bigger if you put it in an XML plist.@DenisO, For a rectangular array like this I’d probably put the data into a file in binary form and then memory map that. You can then access the values at random and the VM subsystem will take care of the rest.Furthermore, I’d wrap this in a nice, Swift-friendly data structure. Something like this:class DataMap { let rowCount = 16 let columnCount = 16 init?(file: URL) { guard let d = try? NSData(contentsOf: file, options: [.alwaysMapped]) else { return nil } guard d.length == (self.rowCount * self.columnCount * MemoryLayout<Double>.size) else { return nil } self.data = d let base = d.bytes.assumingMemoryBound(to: Double.self) self.buffer = UnsafeBufferPointer(start: base, count: d.length) } private let data: NSData private let buffer: UnsafeBufferPointer<Double> subscript (row: Int, column: Int) -> Double { precondition((0..&