sassa_nf ([personal profile] sassa_nf) wrote in [personal profile] aklepatc 2024-05-09 07:35 am (UTC)

Yes, almost. The difference really isn't the memory retention, but when reallocation happens and what the footprint requirement is.

I.e if you pop from the back, you retain just as much memory as when you pop from the front. The difference is that if you pop from the front, this will trim to size upon the next push, but if you pop from the back, you will retain the historically biggest array.

But we can't really tell how that works, because it is a slice, an abstraction. So it may well be a ring buffer underneath, why not?

Of course, the experiment shows that the implementation isn't a ring buffer:

https://tio.run/##bY7NCsIwEITv@xTLnhIoUvFW6Dt4Lz3E/qXUbENNQSM@e4ypCIqngfm@gRnmEKxqJjV0aNTIAKOx8@IEUm8coQToV24SExLvgIgGizIWUyeq@uKWkYcM8wwPcoMlKms7boXJkNpZUwx1aihhTttqX9R/5OvNv60qryMi7z1tq4/H0dNaf3tudQSvIn7eHeMjd2Zh5G/DEh4hPAE

Append behaviour was surprising, though. I.e. that appending to n modified m.

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting