I have this C library that interacts with some hardware over the network that 
produces a ton of data. It tells me up front the maximum size the data might be 
so I can allocate a buffer for it, then does a bunch of network requests 
downloading that data into the buffer, then tells me when it's done and what 
the final, smaller size is.

Thanks to previous discussions on the list, I settled on using a [UInt8] as the 
buffer, because it let me avoid various .withUnsafePointer{} calls (I need the 
unsafe buffer pointer to live outside the scope of the closures). 
Unfortunately, When I go to shrink the buffer to its final size with:

    self.dataBuffer = Array(self.dataBuffer![0 ..< finalBufferSize])

This ends up taking over 2 minutes to complete (on an iPad Pro). 
finalBufferSize is very large, 240 MB, but I think it's doing a very naive copy.

I've since worked around this problem, but is there any way to improve on this?

Thanks,

-- 
Rick Mann
rm...@latencyzero.com


_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to