Hello Jean-Yves,

There is a memory leak, in interp, not splin.
Could you create a bug report?

Antoine

///////

test=%t; // no leak if true, leak if false

niter=100;
mems=zeros(1:niter+1)*%nan;
is=0:niter;

h=scf();
mem=evstr(tokens(unix_g('free -b| grep ''Mem:'''))(3));
mems(1)=mem;
plot(is,mems,'k.');
xlabel('iteration of splin/interp')
ylabel('memory used')
for i=1:niter
  mprintf("%d\n",i);
  n=1e6;
  xp=1:n;
  x=1:100:n;
  y=rand(x);
  if test then
      d=splin(x,y);
      z=rand(xp);
  else
     d=splin(x,y);
     z=interp(xp,x,y,d);
  end
  mem=evstr(tokens(unix_g('free -b| grep ''Mem:'''))(3));
  mems(i+1)=mem;
  plot(is,mems,'k.');
  if test then
      xs2png(h,"memory_leak_test.png");
  else
      xs2png(h,"memory_leak.png");
  end

end


Le 08/03/2021 à 09:56, Jean-Yves Baudais a écrit :
Hi,


But I guess splin() gets the derivatives [...]

Oh, maybe I was not clear. The memory issue is not here. There is not problem to compute z. The loop is used to show the problem: it seems that interp doesn't free the used memory after each call. So after hundreds of call Scilab is killed!

for i=1:1000
  mprintf("%d\n",i);
  n=1e6;
  xp=1:n;
  x=1:100:n;
  y=rand(x);
  d=splin(x,y);
  z=interp(xp,x,y,d);
end

--Jean-Yves
_______________________________________________
users mailing list
users@lists.scilab.org
http://lists.scilab.org/mailman/listinfo/users

_______________________________________________
users mailing list
users@lists.scilab.org
http://lists.scilab.org/mailman/listinfo/users

Reply via email to