Le 04/04/2016 01:28, Collin Anderson a écrit :
> So, I used to be into game development, I was big on writing my own engines 
> from scratch in C++.
> This exact memory management problem is one encountered very frequently in 
> such projects.  Any
> game developer lives by this mantra when it comes to memory management: never 
> fragment the heap.
> 
> 
> The reduction in memory usage cannot justify the system-wide impacts of heap 
> fragmentation and
> memory manager overhead caused by frequent allocation and freeing of large 
> blocks.  The #if 1 on
> line 178 should always be a #if 0, in my opinion.  The comment says, 'there 
> is no point in
> holding a large amount of memory when there is no use for it."  Of course 
> there is a use for it.
> There just isn't a use for it right that instant, but if that much 
> simultaneous memory was at one
> point needed, then its safe to assume it will be needed again, so just hold 
> on to it until then.
> Yes, that is wasteful, but it is less wasteful than the system-wide 
> performance toll that
> significant heap fragmentation can cause.  The reduced memory usage is simply 
> not worth the cost.
> It is better to consume the additional memory.
> 
> As for improving cached_container, believe it or not, I actually have a 
> container class I wrote
> years ago that I am rather proud of, it was designed to manage large terrain 
> meshes (I was
> writing my own ROAM terrain rendering engine) and I am going to play around 
> and see if its
> adaptable to KiCad.  And if it is, I'll see if it is helpful.  It might be I 
> just THINK it is
> good, but isn't :).  If I have anything useful to add or modify in that class 
> though, I'll do a
> branch.
> 
> Thanks!
> 
> 

Thanks for your help.
I fully agree with you.
However I am not the guy who wrote the cached container code.

In rev 6661, I disable this deallocation/reallocation option (This change was 
suggested by Orson,
the author of this code).
It is not yet perfect.

I still have this issue when switching off/on the Opengl GAL, because there is 
still a
deallocation/reallocation memory

It could be worth to see if your container class can help to fix this (very 
annoying and serious,
because I ran out of memory on a PC with 4Gb of memory, with 256 Mbytes chunks 
only) issue.


-- 
Jean-Pierre CHARRAS

_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to