]> pd.if.org Git - nbds/blobdiff - test/sl_test.c
generic interface for map-like data structures
[nbds] / test / sl_test.c
index c06becbbfb3009d6cb282fb88a73c7e87fcc8c70..00f9ac0a63e4a1f618288c8da3c46f0ea4d2ce3b 100644 (file)
@@ -5,13 +5,13 @@
 
 #include "common.h"
 #include "runtime.h"
-#include "struct.h"
+#include "map.h"
 
 #define NUM_ITERATIONS 10000000
 
 static volatile int wait_;
 static long num_threads_;
-static skiplist_t *sl_;
+static map_t *map_;
 
 void *worker (void *arg) {
 
@@ -21,14 +21,22 @@ void *worker (void *arg) {
 
     for (int i = 0; i < NUM_ITERATIONS/num_threads_; ++i) {
         unsigned r = nbd_rand();
-        int key = r & 0xF;
+        uint64_t key = r & 0xF;
+#if 1
         char key_str[10];
-        sprintf(key_str, "%X", key);
+        sprintf(key_str, "%llX", key);
         if (r & (1 << 8)) {
-            sl_add(sl_, key_str, strlen(key_str) + 1, 1);
+            map_set(map_, key_str, strlen(key_str) + 1, (r & 0xFF)+1);
         } else {
-            sl_remove(sl_, key_str, strlen(key_str) + 1);
+            map_remove(map_, key_str, strlen(key_str) + 1);
         }
+#else
+        if (r & (1 << 8)) {
+            map_set(map_, (void *)key, -1, (r & 0xFF)+1);
+        } else {
+            map_remove(map_, (void *)key, -1);
+        }
+#endif
 
         rcu_update();
     }
@@ -67,7 +75,7 @@ int main (int argc, char **argv) {
         }
     }
 
-    sl_ = sl_alloc();
+    map_ = map_alloc(MAP_TYPE_SKIPLIST);
 
     struct timeval tv1, tv2;
     gettimeofday(&tv1, NULL);
@@ -85,7 +93,7 @@ int main (int argc, char **argv) {
 
     gettimeofday(&tv2, NULL);
     int ms = (int)(1000000*(tv2.tv_sec - tv1.tv_sec) + tv2.tv_usec - tv1.tv_usec) / 1000;
-    sl_print(sl_);
+    map_print(map_);
     printf("Th:%ld Time:%dms\n", num_threads_, ms);
 
     return 0;