+void bench_insert(ISAMB isb, int number_of_trees,
+ int number_of_rounds, int number_of_elements)
+{
+ ISAMC_I isamc_i;
+ ISAM_P *isamc_p = xmalloc(sizeof(ISAM_P) * number_of_trees);
+ struct read_info ri;
+ int round, i;
+
+ for (i = 0; i<number_of_trees; i++)
+ isamc_p[i] = 0; /* initially, is empty */
+
+ ri.val = 0;
+ ri.step = 1;
+ ri.insertMode = 1;
+
+ for (round = 0; round < number_of_rounds; round++)
+ {
+#if HAVE_SYS_TIMES_H
+#if HAVE_SYS_TIME_H
+ struct tms tms1, tms2;
+ struct timeval start_time, end_time;
+ double usec;
+ times(&tms1);
+ gettimeofday(&start_time, 0);
+#endif
+#endif
+ for (i = 0; i<number_of_trees; i++)
+ {
+
+ /* insert a number of entries */
+ ri.no = 0;
+
+ ri.val = (rand());
+ ri.max = number_of_elements;
+
+ isamc_i.clientData = &ri;
+ isamc_i.read_item = code_read;
+
+
+ isamb_merge (isb, &isamc_p[i] , &isamc_i);
+ }
+#if HAVE_SYS_TIMES_H
+#if HAVE_SYS_TIME_H
+ gettimeofday(&end_time, 0);
+ times(&tms2);
+
+ usec = (end_time.tv_sec - start_time.tv_sec) * 1000000.0 +
+ end_time.tv_usec - start_time.tv_usec;
+
+ yaz_log (YLOG_LOG, "round=%d times: %5.4f %5.2f %5.2f",
+ round,
+ usec / 1000000,
+ (double) (tms2.tms_utime - tms1.tms_utime)/100,
+ (double) (tms2.tms_stime - tms1.tms_stime)/100);
+#endif
+#endif
+ }
+}
+