Ahh, that makes sense. Thanks for clearing that up.
On Thursday, May 26, 2016 at 8:59:14 AM UTC-7, Yichao Yu wrote: > > On Thu, May 26, 2016 at 11:44 AM, Chris Rackauckas <rack...@gmail.com > <javascript:>> wrote: > > Thanks, that's good to know. Can you explain a little bit about why it > would > > hurt performance? > > See my response on an old thread. > > https://groups.google.com/forum/?fromgroups=#!searchin/julia-users/Suspending$20Garbage$20Collection$20for$20Performance...good$20idea$20or$20bad$20idea$3F/julia-users/6_XvoLBzN60/nkB30SwmdHQJ > > > In short, the key points are that > > 1. Freeing memory is not free. > > You need to do work so that you can reclaim it later, (why would > you free it otherwise....) > > 2. Doing the work incrementally is typically more expensive than doing > the work in batches. > > This is where the trade off between latency and throughput comes in. > > These being said, there are of course cases that you can construct > with manually tweaked memory management that beats the best GC which > has to guess the best strategy (and finding such example should be > easier for a less optimized GC). However, I think currently the > unsafeness, the likelihood of misuse and the impact on other part of > the runtime doesn't really justify introducing manual memory > management of julia objects. > > > > > On Thursday, May 26, 2016 at 8:23:34 AM UTC-7, Yichao Yu wrote: > >> > >> On Thu, May 26, 2016 at 11:06 AM, Chris Rackauckas <rack...@gmail.com> > >> wrote: > >> > I see mentions like this one every once in awhile: > >> > > >> > "D language is a special case, as it has GC, but it's also optional > (as > >> > with > >> > Julia)" > >> > > >> > Is GC optional? > >> > >> No, Not for julia objects. > >> > >> > I thought the only way to discard something from memory was > >> > to set it to zero and call garbage control (which then runs the whole > >> > garbage control). Is there a more targeted way to delete things? > >> > >> No, Not for julia objects. > >> > >> > If it's not > >> > already available, it seems like it would be useful for code focusing > >> > performance as an option. > >> > >> This will actually **not** improve performance most of the time and > >> can actually hurt performance a lot. > >> The only case I can think of that can have better performance is > >> manually managing an object pool. > >> This might improve latency or memory usage. All of the advantage can > >> be obtained by improving the GC itself, which is the preferred way. > >> This feature will also be extremely unsafe and can break many > >> assumptions made in the runtime. >