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

Reply via email to