kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #23947
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