summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2025-10-16 21:12:00 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2025-10-16 21:12:00 +0300
commite962c7a4c70b6e2c3f2df89be176c491d62739e7 (patch)
treea5c22494b81fdc52ff053fc417f5039a2efb6dba
parent717eb9512cbd98e965c1b842cbc9d84e218c37c2 (diff)
downloadconts-master.tar.gz
conts-master.zip
use different iteration values for test/benchHEADmaster
+ Regular tests are pretty darn slow with valgrind on certain virtual machines, speed them up a bit
-rw-r--r--Makefile18
-rw-r--r--tests/map.c10
-rw-r--r--tests/sptree.c20
-rw-r--r--tests/spvec.c16
-rw-r--r--tests/test.h4
-rw-r--r--tests/vec.c17
6 files changed, 46 insertions, 39 deletions
diff --git a/Makefile b/Makefile
index 3cd6b99..716cd5c 100644
--- a/Makefile
+++ b/Makefile
@@ -2,31 +2,33 @@ CFLAGS = -g -Wall -Wextra -O2
check: check-vec check-spvec check-sptree check-map
# see scripts/coverage for coverage testing
+TESTITER = 1000
+BENCHITER = 10000000
check-vec:
mkdir -p build
- $(CC) $(CFLAGS) $(COVERAGEFLAGS) \
+ $(CC) $(CFLAGS) $(COVERAGEFLAGS) -DITER=$(TESTITER) \
-Iinclude -Ideps/covsrv/include \
deps/covsrv/src/client.c tests/vec.c -o build/vec
./scripts/run-test ./build/vec
check-spvec:
mkdir -p build
- $(CC) $(CFLAGS) $(COVERAGEFLAGS) \
+ $(CC) $(CFLAGS) $(COVERAGEFLAGS) -DITER=$(TESTITER) \
-Iinclude -Ideps/covsrv/include \
deps/covsrv/src/client.c tests/spvec.c -o build/spvec
./scripts/run-test ./build/spvec
check-sptree:
mkdir -p build
- $(CC) $(CFLAGS) $(COVERAGEFLAGS) \
+ $(CC) $(CFLAGS) $(COVERAGEFLAGS) -DITER=$(TESTITER) \
-Iinclude -Ideps/covsrv/include \
deps/covsrv/src/client.c tests/sptree.c -o build/sptree
./scripts/run-test ./build/sptree
check-map:
mkdir -p build
- $(CC) $(CFLAGS) $(COVERAGEFLAGS) \
+ $(CC) $(CFLAGS) $(COVERAGEFLAGS) -DITER=$(TESTITER) \
-Iinclude -Ideps/covsrv/include \
deps/covsrv/src/client.c tests/map.c -o build/map
./scripts/run-test ./build/map
@@ -35,28 +37,28 @@ bench: bench-vec bench-spvec bench-sptree bench-map
bench-vec:
mkdir -p build
- $(CC) $(CFLAGS) \
+ $(CC) $(CFLAGS) -DITER=$(BENCHITER) \
-Iinclude -Ideps/covsrv/include \
tests/vec.c -o build/vec_opt
time ./build/vec_opt 2> build/vec_bench.txt
bench-spvec:
mkdir -p build
- $(CC) $(CFLAGS) \
+ $(CC) $(CFLAGS) -DITER=$(BENCHITER)\
-Iinclude -Ideps/covsrv/include \
tests/spvec.c -o build/spvec_opt
time ./build/spvec_opt 2> build/spvec_bench.txt
bench-sptree:
mkdir -p build
- $(CC) $(CFLAGS) \
+ $(CC) $(CFLAGS) -DITER=$(BENCHITER) \
-Iinclude -Ideps/covsrv/include \
tests/sptree.c -o build/sptree_opt
time ./build/sptree_opt 2> build/sptree_bench.txt
bench-map:
mkdir -p build
- $(CC) $(CFLAGS) \
+ $(CC) $(CFLAGS) -DITER=$(BENCHITER) \
-Iinclude -Ideps/covsrv/include \
tests/map.c -o build/map_opt
time ./build/map_opt 2> build/map_bench.txt
diff --git a/tests/map.c b/tests/map.c
index f9f919b..9af0b01 100644
--- a/tests/map.c
+++ b/tests/map.c
@@ -37,17 +37,17 @@ int main()
assert(false && "iterating empty map");
}
- for (int i = 0; i < 1000000; ++i) {
+ for (int i = 0; i < ITER; ++i) {
if (!ints_insert(&ints, i, i)) {
fprintf(stderr, "failed inserting %d\n", i);
ints_destroy(&ints);
return -1;
}
}
- assert(ints_len(&ints) == 1000000);
+ assert(ints_len(&ints) == ITER);
- for (int i = 0; i < 1000000; ++i) {
+ for (int i = 0; i < ITER; ++i) {
int *v = ints_find(&ints, i);
assert(v && *v == i);
}
@@ -71,9 +71,9 @@ int main()
count++;
}
- assert(count == 1000000);
+ assert(count == ITER);
- for (int i = 0; i < 1000000; ++i) {
+ for (int i = 0; i < ITER; ++i) {
ints_remove(&ints, i);
}
diff --git a/tests/sptree.c b/tests/sptree.c
index 9eff356..3499d61 100644
--- a/tests/sptree.c
+++ b/tests/sptree.c
@@ -16,6 +16,10 @@
#include <conts/sptree.h>
+#define RANDITER (ITER / 100)
+
+int inserted[RANDITER];
+
int main()
{
#if defined(COVERAGE)
@@ -29,16 +33,16 @@ int main()
assert(false && "iterating empty tree");
}
- for (int i = 0; i < 1000000; ++i) {
+ for (int i = 0; i < ITER; ++i) {
if (!ints_insert(&ints, i)) {
fprintf(stderr, "failed inserting %d\n", i);
ints_destroy(&ints);
return -1;
}
}
- assert(ints_len(&ints) == 1000000);
+ assert(ints_len(&ints) == ITER);
- for (int i = 0; i < 1000000; ++i) {
+ for (int i = 0; i < ITER; ++i) {
int *v = ints_find(&ints, i);
assert(v && *v == i);
}
@@ -57,7 +61,7 @@ int main()
i++;
}
- for (int i = 0; i < 1000000; ++i) {
+ for (int i = 0; i < ITER; ++i) {
ints_remove(&ints, i);
}
@@ -69,25 +73,23 @@ int main()
/* insert random integers to hopefully exercise the code a bit more */
srand(0);
- int inserted[1000];
- for (int i = 0; i < 1000; ++i) {
+ for (int i = 0; i < RANDITER; ++i) {
inserted[i] = rand();
/* covsrv shouldn't fail anymore */
assert(ints_insert(&ints, inserted[i]));
}
- for (int i = 0; i < 1000; ++i) {
+ for (int i = 0; i < RANDITER; ++i) {
int *v = ints_find(&ints, inserted[i]);
assert(v && *v == inserted[i]);
}
- for (int i = 0; i < 1000; ++i) {
+ for (int i = 0; i < RANDITER; ++i) {
ints_remove(&ints, inserted[i]);
}
assert(ints_len(&ints) == 0);
-
ints_destroy(&ints);
}
diff --git a/tests/spvec.c b/tests/spvec.c
index b46bd88..b169884 100644
--- a/tests/spvec.c
+++ b/tests/spvec.c
@@ -38,16 +38,16 @@ int main()
ints_reset(&ints);
assert(ints_len(&ints) == 0);
- for (int i = 0; i < 1000000; ++i) {
+ for (int i = 0; i < ITER; ++i) {
if (!ints_append(&ints, i)) {
fprintf(stderr, "failed appending %d to vec\n", i);
ints_destroy(&ints);
return -1;
}
}
- assert(ints_len(&ints) == 1000000);
+ assert(ints_len(&ints) == ITER);
- for (int i = 0; i < 1000000; ++i) {
+ for (int i = 0; i < ITER; ++i) {
int *v = ints_at(&ints, i);
assert(v && *v == i);
}
@@ -59,7 +59,7 @@ int main()
}
/* TEN million !!1! */
- if (!ints_reserve(&ints, 10000000)) {
+ if (!ints_reserve(&ints, 10 * ITER)) {
fprintf(stderr, "failed reserving vec\n");
ints_destroy(&ints);
return -1;
@@ -69,13 +69,13 @@ int main()
* (is shrink necessary when we already have reserve? I
* guess it shows intention a bit better and just asserts instead of
* maybe fails?) */
- ints_shrink(&ints, 1000000);
+ ints_shrink(&ints, ITER);
/* so the above is equivalent to */
- assert(ints_reserve(&ints, 1000000));
- assert(ints_len(&ints) == 1000000);
+ assert(ints_reserve(&ints, ITER));
+ assert(ints_len(&ints) == ITER);
- for (int i = 1000000 - 1; i >= 0; --i) {
+ for (int i = ITER - 1; i >= 0; --i) {
ints_remove(&ints, i);
}
assert(ints_len(&ints) == 0);
diff --git a/tests/test.h b/tests/test.h
index 2fa0879..ea50db0 100644
--- a/tests/test.h
+++ b/tests/test.h
@@ -9,4 +9,8 @@
#define callocc(...) cover_ptr(calloc, __VA_ARGS__)
#define reallocc(...) cover_ptr(realloc, __VA_ARGS__)
+#ifndef ITER
+#define ITER 1000000
+#endif
+
#endif /* TEST_H */
diff --git a/tests/vec.c b/tests/vec.c
index af36b5c..09a8deb 100644
--- a/tests/vec.c
+++ b/tests/vec.c
@@ -32,16 +32,16 @@ int main()
assert(false && "iterating empty vec");
}
- for (int i = 0; i < 1000000; ++i) {
+ for (int i = 0; i < ITER; ++i) {
if (!ints_append(&ints, i)) {
fprintf(stderr, "failed appending %d to vec\n", i);
ints_destroy(&ints);
return -1;
}
}
- assert(ints_len(&ints) == 1000000);
+ assert(ints_len(&ints) == ITER);
- for (int i = 0; i < 1000000; ++i) {
+ for (int i = 0; i < ITER; ++i) {
int *v = ints_at(&ints, i);
assert(v && *v == i);
}
@@ -52,8 +52,7 @@ int main()
i++;
}
- /* TEN million !!1! */
- if (!ints_reserve(&ints, 10000000)) {
+ if (!ints_reserve(&ints, 10 * ITER)) {
fprintf(stderr, "failed reserving vec\n");
ints_destroy(&ints);
return -1;
@@ -63,13 +62,13 @@ int main()
* (is shrink necessary when we already have reserve? I
* guess it shows intention a bit better and just asserts instead of
* maybe fails?) */
- ints_shrink(&ints, 1000000);
+ ints_shrink(&ints, ITER);
/* so the above is equivalent to */
- assert(ints_reserve(&ints, 1000000));
- assert(ints_len(&ints) == 1000000);
+ assert(ints_reserve(&ints, ITER));
+ assert(ints_len(&ints) == ITER);
- for (int i = 1000000 - 1; i >= 0; --i) {
+ for (int i = ITER - 1; i >= 0; --i) {
ints_remove(&ints, i);
}
assert(ints_len(&ints) == 0);