🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #272428

Re: [SGCL] Odśmiecania współbieżnego ciąg dalszy

#272428
From: Artur Bać
Date: Tue, 26 Feb 2008 13:01
54 lines
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-mail
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>

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