From gb at tal.stat.umu.se  Thu Dec 30 16:55:13 2004
From: gb at tal.stat.umu.se (=?iso-8859-1?Q?G=F6ran_Brostr=F6m?=)
Date: Thu Dec 30 16:55:24 2004
Subject: [Rd] optim/vmmin and R_alloc
Message-ID: <20041230155513.GA22178@tal.stat.umu.se>

I am calling 'vmmin' several times from a C function (which is called via
.C). It works very well, except for memory consumption. The cause is that
vmmin allocates memory via R_alloc, and this memory is not freed as vmmin
exits. Instead all the allocated memory is freed on return of the .C
call. 

In one application, I have 2000 functions of 500 variables each to
minimize. In each call to vmmin, about 1MB memory is allocated,
which sums up to 2GB in total allocation. I have 2.4GB memory in my office
computer, and it is all used up. It seems as if garbage collection saves
the situation at the end, but the slow down is noticeable. On my home
computer with 512MB memory, this problem cannot be run.

However, and that is my question/suggestion: Why not use Calloc+Free
instead of R_alloc in vmmin (and maybe in other places)? I made the
changes in 'optim.c' in the functions 'vmmin' and 'Lmatrix'. Then I rebuilt
and reinstalled R-2.0.1. The result was great! My function ran very fast and
without any memory problems.

So why not? Or will this change create other problems?
 
-- 
 G?ran Brostr?m                    tel: +46 90 786 5223
 Department of Statistics          fax: +46 90 786 6614
 Ume? University                   http://www.stat.umu.se/egna/gb/
 SE-90187 Ume?, Sweden             e-mail: gb@stat.umu.se


[Rd] optim/vmmin and R_alloc
=?iso-8859-1?Q?G=F6ran_Brostr=F6m?=