
On 27/08/2020 02.56, Bertram Felgenhauer via Glasgow-haskell-users wrote:
David Feuer wrote:
I'm looking to play around with an array-based structure with sub-linear worst-case bounds. Array is pretty awkward in that context because creating a new one takes O(n) time to initialize it. Is that all true of newByteArray, or can I get one with arbitrary garbage in it for cheap?
newByteArray# does not actively clear memory.
However, for large arrays, I think the memory is likely to be freshly allocated from the OS, and the OS will have cleared it for security reasons.
Not sure how common it is in practice, but it's worth noting that OS'es should be able to clear freed memory as a background process, so that they don't have to do it on demand at the precie point of allocation. Of course this depends on memory churn, etc. etc., so it's not exactly guaranteed even if the OS supports it. Regards,