commit 9703dbc6415b30506be72b961fd33338b67f45bc
parent 9b0cde1ece9c69937752afe00fa6c5cc6e1ed40c
Author: Yersa Nordman <finwo@pm.me>
Date: Sun, 17 Mar 2024 21:57:23 +0100
Mark patterns used for searching as const in args
Diffstat:
4 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
@@ -85,7 +85,7 @@ void mindex_set(struct mindex_t *mindex, void *item);
Simple query, fetch an entry in the index matching the pattern
```C
-void * mindex_get(struct mindex_t *mindex, void *pattern);
+void * mindex_get(struct mindex_t *mindex, const void *pattern);
```
</details>
@@ -115,7 +115,7 @@ void * mindex_rand(struct mindex_t *mindex);
Delete a single entry from the index matching the pattern
```C
-void mindex_delete(struct mindex_t *mindex, void *pattern);
+void mindex_delete(struct mindex_t *mindex, const void *pattern);
```
</details>
diff --git a/benchmark.c b/benchmark.c
@@ -38,12 +38,25 @@ void mindex_bmark_rstr_1024() {
}
}
+void mindex_bmark_rstr_65536() {
+ for(int i=0; i<65536; i++) {
+ free(random_str(16));
+ }
+}
+
void mindex_bmark_assign_1024() {
struct mindex_t *mindex = mindex_init(fn_compare_string, fn_purge, NULL);
for(int i=0; i<1024; i++) {
mindex_set(mindex, random_str(16));
}
+ mindex_free(mindex);
+}
+void mindex_bmark_assign_65536() {
+ struct mindex_t *mindex = mindex_init(fn_compare_string, fn_purge, NULL);
+ for(int i=0; i<65536; i++) {
+ mindex_set(mindex, random_str(16));
+ }
mindex_free(mindex);
}
@@ -55,6 +68,8 @@ int main() {
BMARK(mindex_bmark_rstr_1024);
BMARK(mindex_bmark_assign_1024);
+ BMARK(mindex_bmark_rstr_65536);
+ BMARK(mindex_bmark_assign_65536);
return bmark_run(100, percentiles);
return 0;
}
diff --git a/src/mindex.c b/src/mindex.c
@@ -139,7 +139,7 @@ void mindex_set(struct mindex_t *mindex, void *item) {
free(resp);
}
-void * mindex_get(struct mindex_t *mindex, void *pattern) {
+void * mindex_get(struct mindex_t *mindex, const void *pattern) {
struct mindex_find_response *resp = mindex_find(mindex, pattern, mindex->items, mindex->length);
void *value = resp->value;
free(resp);
@@ -160,7 +160,7 @@ void * mindex_rand(struct mindex_t *mindex) {
return mindex->items[rand() % mindex->length];
}
-void mindex_delete(struct mindex_t *mindex, void *pattern) {
+void mindex_delete(struct mindex_t *mindex, const void *pattern) {
struct mindex_find_response *resp = mindex_find(mindex, pattern, mindex->items, mindex->length);
// Not found = done
diff --git a/src/mindex.h b/src/mindex.h
@@ -91,7 +91,7 @@ void mindex_set(struct mindex_t *mindex, void *item);
///
/// Simple query, fetch an entry in the index matching the pattern
///<C
-void * mindex_get(struct mindex_t *mindex, void *pattern);
+void * mindex_get(struct mindex_t *mindex, const void *pattern);
///>
/// </details>
@@ -118,7 +118,7 @@ void * mindex_rand(struct mindex_t *mindex);
///
/// Delete a single entry from the index matching the pattern
///<C
-void mindex_delete(struct mindex_t *mindex, void *pattern);
+void mindex_delete(struct mindex_t *mindex, const void *pattern);
///>
/// </details>