Changeset: 91443b5950d5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/91443b5950d5
Modified Files:
gdk/gdk.h
gdk/gdk_imprints.c
gdk/gdk_join.c
gdk/gdk_sample.c
Branch: default
Log Message:
Avoid global lock of BATsample by using private seed.
diffs (56 lines):
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -2199,7 +2199,7 @@ gdk_export gdk_return BATfirstn(BAT **to
*
*/
gdk_export BAT *BATsample(BAT *b, BUN n);
-gdk_export BAT *BATsample_with_seed(BAT *b, BUN n, unsigned seed);
+gdk_export BAT *BATsample_with_seed(BAT *b, BUN n, uint64_t seed);
/*
*
diff --git a/gdk/gdk_imprints.c b/gdk/gdk_imprints.c
--- a/gdk/gdk_imprints.c
+++ b/gdk/gdk_imprints.c
@@ -509,7 +509,7 @@ BATimprints(BAT *b)
imprintsheap);
#define SMP_SIZE 2048
- s1 = BATsample(b, SMP_SIZE);
+ s1 = BATsample_with_seed(b, SMP_SIZE, (uint64_t) GDKusec() *
(uint64_t) b->batCacheid);
if (s1 == NULL) {
GDKfree(imprints);
return GDK_FAIL;
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -3118,9 +3118,9 @@ guess_uniques(BAT *b, struct canditer *c
ALGOBATPAR(b));
return p->v.val.dval;
}
- s1 = BATsample(b, 1000);
+ s1 = BATsample_with_seed(b, 1000, (uint64_t) GDKusec() *
(uint64_t) b->batCacheid);
} else {
- BAT *s2 = BATsample(ci->s, 1000);
+ BAT *s2 = BATsample_with_seed(ci->s, 1000, (uint64_t) GDKusec()
* (uint64_t) b->batCacheid);
s1 = BATproject(s2, ci->s);
BBPreclaim(s2);
}
diff --git a/gdk/gdk_sample.c b/gdk/gdk_sample.c
--- a/gdk/gdk_sample.c
+++ b/gdk/gdk_sample.c
@@ -173,11 +173,11 @@ do_batsample(BAT *b, BUN n, random_state
/* BATsample implements sampling for BATs */
BAT *
-BATsample_with_seed(BAT *b, BUN n, unsigned seed)
+BATsample_with_seed(BAT *b, BUN n, uint64_t seed)
{
random_state_engine rse;
- init_random_state_engine(rse, (uint64_t) seed);
+ init_random_state_engine(rse, seed);
return do_batsample(b, n, rse, NULL);
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list