1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-27 13:30:31 +02:00

quads benchmark takes gc-options param

This commit is contained in:
Andy Wingo 2023-02-28 11:24:33 +01:00
parent 157037dd1f
commit f657cd3847

17
quads.c
View file

@ -101,24 +101,18 @@ static size_t tree_size(size_t depth) {
#define MAX_THREAD_COUNT 256 #define MAX_THREAD_COUNT 256
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
if (argc != 4) { if (argc < 3 || 4 < argc) {
fprintf(stderr, "usage: %s DEPTH MULTIPLIER PARALLELISM\n", argv[0]); fprintf(stderr, "usage: %s DEPTH MULTIPLIER [GC-OPTIONS]\n", argv[0]);
return 1; return 1;
} }
size_t depth = parse_size(argv[1], "depth"); size_t depth = parse_size(argv[1], "depth");
double multiplier = atof(argv[2]); double multiplier = atof(argv[2]);
size_t parallelism = atol(argv[3]);
if (!(1.0 < multiplier && multiplier < 100)) { if (!(1.0 < multiplier && multiplier < 100)) {
fprintf(stderr, "Failed to parse heap multiplier '%s'\n", argv[2]); fprintf(stderr, "Failed to parse heap multiplier '%s'\n", argv[2]);
return 1; return 1;
} }
if (parallelism < 1 || parallelism > MAX_THREAD_COUNT) {
fprintf(stderr, "Expected integer between 1 and %d for parallelism, got '%s'\n",
(int)MAX_THREAD_COUNT, argv[3]);
return 1;
}
size_t nquads = tree_size(depth); size_t nquads = tree_size(depth);
size_t tree_bytes = nquads * sizeof(Quad); size_t tree_bytes = nquads * sizeof(Quad);
@ -131,7 +125,12 @@ int main(int argc, char *argv[]) {
struct gc_options *options = gc_allocate_options(); struct gc_options *options = gc_allocate_options();
gc_options_set_int(options, GC_OPTION_HEAP_SIZE_POLICY, GC_HEAP_SIZE_FIXED); gc_options_set_int(options, GC_OPTION_HEAP_SIZE_POLICY, GC_HEAP_SIZE_FIXED);
gc_options_set_size(options, GC_OPTION_HEAP_SIZE, heap_size); gc_options_set_size(options, GC_OPTION_HEAP_SIZE, heap_size);
gc_options_set_int(options, GC_OPTION_PARALLELISM, parallelism); if (argc == 4) {
if (!gc_options_parse_and_set_many(options, argv[3])) {
fprintf(stderr, "Failed to set GC options: '%s'\n", argv[3]);
return 1;
}
}
struct gc_heap *heap; struct gc_heap *heap;
struct gc_mutator *mut; struct gc_mutator *mut;