Mail Archives: djgpp/1998/09/25/17:30:16
Renato F. Cantao wrote:
> Hi SET!
>
> On Fri, 25 Sep 1998, Salvador Eduardo Tropea (SET) wrote:
>
> > "Renato F. Cantao" <cantao AT ime DOT unicamp DOT br> asked:
> >
> > > I'm working on some mathematics implementations involving large
> > > amounts of memory allocation. So my questions are:
> > >
> > > 1. Operator "new" and "malloc" are speed-equivalent?
> >
> > Almost, new is a wrapper, so it makes some extra checks.
> >
> > > 2. Despite the answer, does exist a better (=faster!) way to
> > > allocate memory?
> >
> > Yes: do your own custom routine optimized for your allocation scheme! ;-)
> >
>
> OK, that's perfect. I'm meaning, does exist any other routine faster than
> new or malloc?
>
> Renato Fernandes CANTAO
> State University at Campinas
> Campinas - Brazil
Depends on how you are going to use the memory. If it is just scratch memory
(will be free'd before the function returns) use alloca(). Note that this uses
stack space for the allocation, but reduces it to a cycle or two. Oh, alloca is
not an ANSI C function. NOTE: the memory allocated this way can't be freed
until the function returns. Conversely, there is no way to stop it from being
freed when the function returns.
alloca is a builtin function that compiles to inline assembly.
Example, allocate 100 bytes: subl $100,%esp; movl %esp,_MyPointer
- Raw text -