It's been awhile for me (and I apologize).  As the original author of the 
memory buffer implementation I think your approach is the smart way to do it on 
current computers.  When I implemented it originally, I did try an exponential 
approach and it crushed my computer at the time so opted for memory efficiency 
rather than performance.  Memory sizes and virtual memory managers in OSes have 
improved since that time.

If we want to offer support for low memory situations, perhaps an if block that 
selects the memory allocation method, at lines 1644 to 1656 we have

if (_GROW_LINEAR == grow_strategy) {
   lines 1644...1656
}  else {
   an exponential strategy that sets plbuf_buffer_size
}

some where near the beginning we have

static const enum { _GROW_LINEAR, _GROW_EXPONENTIAL } grow_strategy = [some 
define that is set by cmake with a default of _GROW_EXPONENTIAL];

I recommend against using an #ifdef block because it is not a good practice 
with modern compilers.  The compiler should optimize out the conditional 
statement because the grow_strategy variable is defined as const.

Jim

> On May 4, 2023, at 12:35 PM, Phil Rosenberg <p.d.rosenb...@gmail.com> wrote:
> 
> 
> Been a while since I've committed anything to the plplot repo, so I wanted to 
> check in before I did anything.
> 
> I just wanted to push a change to buffer growth, so that it grows 
> exponentially rather than linearly (doubles every time it needs to grow). I 
> have some rather large data being plotted by plshades and plplot is doing a 
> lot of reallocs to grow the buffer 128kB at a time.
> 
> Let me know if it's okay to push the commit.
> 
> Phil
> _______________________________________________
> Plplot-devel mailing list
> Plplot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/plplot-devel


_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to