You are beginning to touch on why modern compacting collectors are beneficial in a large class of applications. Not all application profiles benefit from this and it comes at a cost, but it is far simpler than rolling your own.
> On Jul 19, 2019, at 8:47 PM, Andrey Tcherepanov > <xnow4fippy...@sneakemail.com> wrote: > > Thanks Ian, > > But just to be clear - I do not want to discard _a part_. I want to discard a > _whole big one_, copying a small needed part that is still "alive" aside. > Allocator perform it's duties as usual - allocate a new small array, and > discard an old one. It is just that compiler invokes this code on defer it if > knows that there is only one reference to the remaining part, and that part > is "small" > > A. > >> On Friday, July 19, 2019 at 6:43:41 PM UTC-6, Ian Lance Taylor wrote: >> On Fri, Jul 19, 2019 at 5:17 PM Andrey Tcherepanov >> <xnow4f...@sneakemail.com> wrote: >> > >> > I understand that it is very easy on application level... if programmer >> > even thought about it. But my assumption is that compiler has some sort of >> > liveness analysis, and it could be utilized here just to help with >> > disposal of a bitten part. >> >> The kind of liveness analysis done by the compiler is only helpful in >> extremely limited circumstances: when the compiler can track the slice >> from creation to destruction and when the slice never escapes in any >> way. I'm skeptical that such a case happens often enough to be worth >> implementing. >> >> (And even if we did implement it we would still have the >> above-mentioned problem that the allocator doesn't support discarding >> part of an allocation.) >> >> Ian > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/b69f101c-0705-466c-96d3-7f1ef0adea74%40googlegroups.com. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/6EE12265-73A7-4AC7-A475-6D0DA052D303%40ix.netcom.com.