Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
Average cost of the OCaml GC
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2010-11-11 (09:08)
From: Goswin von Brederlow <goswin-v-b@w...>
Subject: Re: [Caml-list] Average cost of the OCaml GC
Jianzhou Zhao <> writes:

> Hi,
> What is the average cost of the OCaml GC? I have a program that calls
> 'mark_slice' in 57% of the total execution time, and calls
> 'sweep_slice' in 21% of the total time, reported by Callgrind, which
> is a profiling tool in Valgrind. 57% and 21% are the 'self cost' ---
> the cost of the function itself ('Self Cost'), rather than the cost
> including all called functions ('Inclusive Cost'). I guess
> 'mark_slice'  and  'sweep_slice'  are functions from OCaml GC. Are
> these numbers normal?

Those numbers sound rather high to me.

> My program calls both OCaml and C, which passes around C data types in
> between. I also doubt if I defined the interface in an 'unefficient'
> way that slows down the GC. Are there any rules in mind to make GC
> work more efficiently?

You can tune some of the GC parameters to suit your use case.

Do you allocate custom types from C? In caml_alloc_custom(ops, size,
used, max) the used and max do influence the GC how often to run. If
you set them wrong you might trigger the GC too often.