> On May 10, 2017, at 11:52 , Joe Groff <jgr...@apple.com> wrote: > > >> On May 8, 2017, at 4:47 PM, Rick Mann via swift-users >> <swift-users@swift.org> wrote: >> >> 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? > > `self.dataBuffer!.removeSubrange(finalBufferSize ..< > self.dataBuffer!.endIndex)` might be more efficient. However, copying an > array of bytes definitely shouldn't be that slow, so is worth a bug report. > > -Joe
Here you go: https://bugs.swift.org/browse/SR-4856 Easy to reproduce in a Playground. -- Rick Mann rm...@latencyzero.com _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users