From ebc7316ac3859bc5e2f01c85bee86d6adea45898 Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Tue, 24 May 2022 21:12:56 +0200 Subject: API change: cbits now uses container pointers args in all member functions, except clone() ... for now. All containers may get same treatment! which will be a rather big API change. This was needed after testing fixed size cbits performance with pass-by-value: was very slow for large bitsets: now faster than std::bitset<>. Also reverted previous cbits_set_value(): much faster because it is branchless. --- examples/bits.c | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) (limited to 'examples/bits.c') diff --git a/examples/bits.c b/examples/bits.c index bd2a9f03..8888f73e 100644 --- a/examples/bits.c +++ b/examples/bits.c @@ -4,21 +4,21 @@ int main() { c_autovar (cbits set = cbits_with_size(23, true), cbits_drop(&set)) { - printf("count %" PRIuMAX ", %" PRIuMAX "\n", cbits_count(set), cbits_size(set)); + printf("count %" PRIuMAX ", %" PRIuMAX "\n", cbits_count(&set), cbits_size(&set)); cbits s1 = cbits_from("1110100110111"); char buf[256]; - cbits_to_str(s1, buf, 0, -1); - printf("buf: %s: %" PRIuMAX "\n", buf, cbits_count(s1)); + cbits_to_str(&s1, buf, 0, -1); + printf("buf: %s: %" PRIuMAX "\n", buf, cbits_count(&s1)); cbits_drop(&s1); cbits_reset(&set, 9); cbits_resize(&set, 43, false); - c_autobuf (str, char, cbits_size(set) + 1) - printf(" str: %s\n", cbits_to_str(set, str, 0, -1)); + c_autobuf (str, char, cbits_size(&set) + 1) + printf(" str: %s\n", cbits_to_str(&set, str, 0, -1)); - printf("%4" PRIuMAX ": ", cbits_size(set)); - c_forrange (i, cbits_size(set)) - printf("%d", cbits_test(set, i)); + printf("%4" PRIuMAX ": ", cbits_size(&set)); + c_forrange (i, cbits_size(&set)) + printf("%d", cbits_test(&set, i)); puts(""); cbits_set(&set, 28); @@ -26,14 +26,14 @@ int main() cbits_resize(&set, 93, false); cbits_resize(&set, 102, true); cbits_set_value(&set, 99, false); - printf("%4" PRIuMAX ": ", cbits_size(set)); - c_forrange (i, cbits_size(set)) - printf("%d", cbits_test(set, i)); + printf("%4" PRIuMAX ": ", cbits_size(&set)); + c_forrange (i, cbits_size(&set)) + printf("%d", cbits_test(&set, i)); puts("\nIterate:"); - printf("%4" PRIuMAX ": ", cbits_size(set)); - c_forrange (i, cbits_size(set)) - printf("%d", cbits_test(set, i)); + printf("%4" PRIuMAX ": ", cbits_size(&set)); + c_forrange (i, cbits_size(&set)) + printf("%d", cbits_test(&set, i)); puts(""); c_autovar (cbits s2 = cbits_clone(set), cbits_drop(&s2)) { @@ -42,20 +42,20 @@ int main() cbits_set(&s2, 17); cbits_set(&s2, 18); printf(" new: "); - c_forrange (i, cbits_size(s2)) - printf("%d", cbits_test(s2, i)); + c_forrange (i, cbits_size(&s2)) + printf("%d", cbits_test(&s2, i)); puts(""); printf(" xor: "); - cbits_xor(&set, s2); - c_forrange (i, cbits_size(set)) - printf("%d", cbits_test(set, i)); + cbits_xor(&set, &s2); + c_forrange (i, cbits_size(&set)) + printf("%d", cbits_test(&set, i)); puts(""); cbits_set_all(&set, false); - printf("%4" PRIuMAX ": ", cbits_size(set)); - c_forrange (i, cbits_size(set)) - printf("%d", cbits_test(set, i)); + printf("%4" PRIuMAX ": ", cbits_size(&set)); + c_forrange (i, cbits_size(&set)) + printf("%d", cbits_test(&set, i)); puts(""); } } -- cgit v1.2.3