on Wed May 10 2017, Rick Mann <swift-users-AT-swift.org> wrote: >> 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
Did you compile this with -Onone or -O? -- -Dave _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users