Article View: pl.comp.lang.c
Article #272428Re: [SGCL] Odśmiecania współbieżnego ciąg dalszy
From: Artur Bać
Date: Tue, 26 Feb 2008 13:01
Date: Tue, 26 Feb 2008 13:01
54 lines
2930 bytes
2930 bytes
Seweryn Habdank-Wojewódzki wrote:
> Raczej cenne jest to, że w C/C++ można mieć GC i można go nie mieć w
> zależności od potrzeb. I to jest ewidentna zaleta C/C++.
>
> W innych językach, aby pokombinować przy GC trzeba się nahakować -- patrz
> manuale o tunigu GC w Javie.
Np w C# mordowac jak ja z starym dobrym malloc /heapalloc
Btw kod na tak przydzielonej pameici jest lekko 2x szybszy od tego co
intensywnie kozysta z NET owego GC
Nie mowiac juz o problemach z fragmentacja ramu gdy uzywa sie GC i
duzej ilosci (setki tysiecy/ mln) alokacji i zwalnainia malych class.
Wtedy sie przydaje znajmosc C /algorytmow i mozna jechac z C# tak jakby
byl to C z mozliwoscia deklarowania metod. (uzywam wtedy tylko struct
ktory jest value type w C#)
//wycinek
public static unsafe class Heap
{
public enum HEAP_INFORMATION_CLASS {
HeapCompatibilityInformation
};
#if USE_KERNEL32
static HANDLE* ph = InitializeLFH();
static HANDLE* InitializeLFH()
{
uint HeapFragValue = 2;
HANDLE* heap = HeapCreate( (uint)dwFlags.CREATE_ENABLE_EXECUTE |
(uint)dwFlags.HEAP_GENERATE_EXCEPTIONS, 4 * 1024 * 1024, 0);
if(!HeapSetInformation(heap,HEAP_INFORMATION_CLASS.HeapCompatibilityInformation,
&HeapFragValue, sizeof(uint)))
throw new InvalidProgramException("Setting LowFragmentationHeap failed");
return heap;
}
#endif
public static void* Malloc(int type_size, int element_count)
#if USE_KERNEL32
void* result = HeapAlloc(ph, (int)dwFlags.HEAP_ZERO_MEMORY, type_size *
element_count);
#else
void* result = malloc(type_size * element_count);
#endif
return result;
}
[DllImport(KERNEL32)]
static extern void* HeapAlloc(HANDLE* hHeap, int flags, int size);
Technical Details
Message-ID:
<fq12ji$r3f$1@news2.task.gda.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!opal.futuro.pl!news.task.gda.pl!not-for-mailReferences:
<fppvdq$68v$1@inews.gazeta.pl> <fq0od3$5bm$1@inews.gazeta.pl> <fq0qpa$ekv$1@inews.gazeta.pl> <fq0s58$jvv$1@inews.gazeta.pl> <fq0tjl$shn$1@news.vectranet.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!opal.futuro.pl!news.task.gda.pl!not-for-mail From: Artur Bać <artur_nospam@ebasoft.com.pl> Newsgroups: pl.comp.lang.c Subject: Re: [SGCL] Odśmiecania współbieżnego ciąg dalszy Date: Tue, 26 Feb 2008 14:01:36 +0100 Organization: CI TASK http://news.task.gda.pl/ Lines: 54 Message-ID: <fq12ji$r3f$1@news2.task.gda.pl> References: <fppvdq$68v$1@inews.gazeta.pl> <fq0od3$5bm$1@inews.gazeta.pl> <fq0qpa$ekv$1@inews.gazeta.pl> <fq0s58$jvv$1@inews.gazeta.pl> <fq0tjl$shn$1@news.vectranet.pl> NNTP-Posting-Host: ftp.ebasoft.com.pl Mime-Version: 1.0 X-Trace: news2.task.gda.pl 1204030898 27759 85.237.185.105 (26 Feb 2008 13:01:38 GMT) X-Complaints-To: abuse@news.task.gda.pl NNTP-Posting-Date: Tue, 26 Feb 2008 13:01:38 +0000 (UTC) X-Notice1: This post has been postprocessed on the news.task.gda.pl server. X-Organization-Notice: Organization line has been filtered X-Organization-Original: EBASoft In-Reply-To: <fq0tjl$shn$1@news.vectranet.pl> User-Agent: Thunderbird 2.0.0.9 (Windows/20071031) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit