🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

8 total messages Started by Borneq Wed, 12 Oct 2016 22:29
alloca() szybszy niż malloc?
#308891
Author: Borneq
Date: Wed, 12 Oct 2016 22:29
7 lines
1099 bytes
http://man7.org/linux/man-pages/man3/alloca.3.html

The alloca() function allocates size bytes of space in the stack
frame of the caller.  This temporary space is automatically freed
when the function that called alloca() returns to its caller.

czy ktoś to stosował?
Re: alloca() szybszy niż malloc?
#308892
Author: M.M.
Date: Thu, 13 Oct 2016 08:14
13 lines
1705 bytes
On Thursday, October 13, 2016 at 12:29:29 AM UTC+2, Borneq wrote:
> http://man7.org/linux/man-pages/man3/alloca.3.html
> 
> The alloca() function allocates size bytes of space in the stack
> frame of the caller.  This temporary space is automatically freed
> when the function that called alloca() returns to its caller.
> 
> czy ktoś to stosował?

Nie stosowałem. Jeśli faktycznie to tylko podnosi ramkę stosu, to
powinno być bardzo szybkie.

Pozdrawiam
Re: alloca() szybszy niż malloc?
#308893
Author: Borneq
Date: Thu, 13 Oct 2016 16:03
5 lines
1144 bytes
W dniu 13.10.2016 o 10:14, M.M. pisze:
> Nie stosowałem. Jeśli faktycznie to tylko podnosi ramkę stosu, to
> powinno być bardzo szybkie.

A jak z mieszanym wołaniem alloca i malloc?
Re: alloca() szybszy niż malloc?
#308894
Author: godek.maciek
Date: Thu, 13 Oct 2016 17:39
13 lines
1853 bytes
W dniu czwartek, 13 października 2016 18:03:56 UTC+2 użytkownik Borneq napisał:
> W dniu 13.10.2016 o 10:14, M.M. pisze:
> > Nie stosowałem. Jeśli faktycznie to tylko podnosi ramkę stosu, to
> > powinno być bardzo szybkie.
> 
> A jak z mieszanym wołaniem alloca i malloc?

nie powinno być problemó. malloc alokuje na stercie.
[alloca za to może doprowadzić do przepełnienia stosu,
choć pewnie dużo tutaj zależy od konkretnej maszyny, na którą piszesz]

no i przy malloku musisz pamiętać, żeby robić "free",
zaś przy alloce nie doprowadzisz do wycieku
Re: alloca() szybszy niż malloc?
#308898
Author: Borneq
Date: Fri, 14 Oct 2016 07:25
12 lines
1656 bytes
W dniu 13.10.2016 o 19:39, godek.maciek@gmail.com pisze:
> nie powinno być problemó. malloc alokuje na stercie.
> [alloca za to może doprowadzić do przepełnienia stosu,
> choć pewnie dużo tutaj zależy od konkretnej maszyny, na którą piszesz]
>
> no i przy malloku musisz pamiętać, żeby robić "free",
> zaś przy alloce nie doprowadzisz do wycieku

To alloca allokuje na stosie? myślałem że też na stercie, tylko w 
stosowy sposób. To jaka różnica między tym a zmienną lokalną? I stos 
jest zwykle mały (do 1 MiB w porównaniu np. z 12 GB pamięci dostępnej z 
16 GiB ramu)
Re: alloca() szybszy niż malloc?
#308897
Author: Piotr Gałka
Date: Fri, 14 Oct 2016 08:57
15 lines
1481 bytes
W dniu 14-10-2016 o 09:25, Borneq pisze:
>
> To alloca allokuje na stosie? myślałem że też na stercie, tylko w
> stosowy sposób. To jaka różnica między tym a zmienną lokalną?

Nigdy nie używałem alloca, ba, nawet nie wiedziałem, że istnieje taka 
możliwość.
Tak trudno wydedukować różnicę?
void fun(int size)
{
   char tab1[size];			// Error
   char *tab2=(char*)alloca(size);	// OK
}

P.G.
Re: alloca() szybszy niż malloc?
#308895
Author: M.M.
Date: Fri, 14 Oct 2016 09:26
18 lines
2405 bytes
On Thursday, October 13, 2016 at 7:39:19 PM UTC+2, godek....@gmail.com wrote:
> W dniu czwartek, 13 października 2016 18:03:56 UTC+2 użytkownik Borneq napisał:
> > W dniu 13.10.2016 o 10:14, M.M. pisze:
> > > Nie stosowałem. Jeśli faktycznie to tylko podnosi ramkę stosu, to
> > > powinno być bardzo szybkie.
> > 
> > A jak z mieszanym wołaniem alloca i malloc?
> 
> nie powinno być problemó. malloc alokuje na stercie.
> [alloca za to może doprowadzić do przepełnienia stosu,
> choć pewnie dużo tutaj zależy od konkretnej maszyny, na którą piszesz]
> 
> no i przy malloku musisz pamiętać, żeby robić "free",
> zaś przy alloce nie doprowadzisz do wycieku

Z opisu jaki wkleiłeś wynika że allokuje poprzez zmianę
ramki stosu:
[allocates size bytes of space in the STACK frame of the caller.]
Re: alloca() szybszy niż malloc?
#308896
Author: M.M.
Date: Fri, 14 Oct 2016 09:28
32 lines
2796 bytes
On Friday, October 14, 2016 at 11:26:27 AM UTC+2, M.M. wrote:
> On Thursday, October 13, 2016 at 7:39:19 PM UTC+2, godek....@gmail.com wrote:
> > W dniu czwartek, 13 października 2016 18:03:56 UTC+2 użytkownik Borneq napisał:
> > > W dniu 13.10.2016 o 10:14, M.M. pisze:
> > > > Nie stosowałem. Jeśli faktycznie to tylko podnosi ramkę stosu, to
> > > > powinno być bardzo szybkie.
> > > 
> > > A jak z mieszanym wołaniem alloca i malloc?
> > 
> > nie powinno być problemó. malloc alokuje na stercie.
> > [alloca za to może doprowadzić do przepełnienia stosu,
> > choć pewnie dużo tutaj zależy od konkretnej maszyny, na którą piszesz]
> > 
> > no i przy malloku musisz pamiętać, żeby robić "free",
> > zaś przy alloce nie doprowadzisz do wycieku
> 
> Z opisu jaki wkleiłeś wynika że allokuje poprzez zmianę
> ramki stosu:
> [allocates size bytes of space in the STACK frame of the caller.]

Przepraszam, powyższa odpowiedź miała być do tego cytatu:


> To alloca allokuje na stosie? myślałem że też na stercie, tylko w 
> stosowy sposób. To jaka różnica między tym a zmienną lokalną? I stos 
> jest zwykle mały (do 1 MiB w porównaniu np. z 12 GB pamięci dostępnej z 
> 16 GiB ramu) 
]

Z opisu jaki wkleiłeś wynika że allokuje poprzez zmianę
ramki stosu:
[allocates size bytes of space in the STACK frame of the caller.]
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads