← Back to team overview

kicad-developers team mailing list archive

Re: Make Cairo optional

 

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


Follow ups

References