Updated benchmarks after internal API changes
This commit is contained in:
@@ -5,6 +5,7 @@ defines.LOOKAHEAD_SIZE = 'BLOCK_COUNT / 8'
|
|||||||
|
|
||||||
[cases.bench_btree_lookup]
|
[cases.bench_btree_lookup]
|
||||||
defines.N = [8, 16, 32, 64, 128, 256, 1024]
|
defines.N = [8, 16, 32, 64, 128, 256, 1024]
|
||||||
|
defines.VALIDATE = [1, 0]
|
||||||
# 0 = in-order
|
# 0 = in-order
|
||||||
# 1 = reversed-order
|
# 1 = reversed-order
|
||||||
# 2 = random-order
|
# 2 = random-order
|
||||||
@@ -31,11 +32,14 @@ code = '''
|
|||||||
lfs_off_t i_
|
lfs_off_t i_
|
||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? 0
|
: (ORDER == 1) ? 0
|
||||||
: BENCH_PRNG(&prng) % (btree.weight+1);
|
: BENCH_PRNG(&prng) % (lfsr_btree_weight(&btree)+1);
|
||||||
lfsr_btree_push(&lfs, &btree, i_, LFSR_TAG_INLINED, 1,
|
lfsr_btree_push(&lfs, &btree, i_, LFSR_TAG_INLINED, 1,
|
||||||
&alphas[i % 26], 1) => 0;
|
&alphas[i % 26], 1) => 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// assume an unfetched btree
|
||||||
|
btree.root.off = 0;
|
||||||
|
|
||||||
// bench lookup
|
// bench lookup
|
||||||
BENCH_START();
|
BENCH_START();
|
||||||
lfs_size_t i = BENCH_PRNG(&prng) % N;
|
lfs_size_t i = BENCH_PRNG(&prng) % N;
|
||||||
@@ -45,8 +49,8 @@ code = '''
|
|||||||
lfs_size_t weight_;
|
lfs_size_t weight_;
|
||||||
|
|
||||||
lfsr_btree_get(&lfs, &btree, i,
|
lfsr_btree_get(&lfs, &btree, i,
|
||||||
&tag_, &id_, &weight_,
|
&id_, &tag_, &weight_,
|
||||||
buffer, 4) => 1;
|
buffer, 4, VALIDATE) => 1;
|
||||||
assert(tag_ == LFSR_TAG_INLINED);
|
assert(tag_ == LFSR_TAG_INLINED);
|
||||||
assert(id_ == i);
|
assert(id_ == i);
|
||||||
assert(weight_ == 1);
|
assert(weight_ == 1);
|
||||||
@@ -55,6 +59,7 @@ code = '''
|
|||||||
|
|
||||||
[cases.bench_btree_commit]
|
[cases.bench_btree_commit]
|
||||||
defines.N = [8, 16, 32, 64, 128, 256, 1024]
|
defines.N = [8, 16, 32, 64, 128, 256, 1024]
|
||||||
|
defines.VALIDATE = 0
|
||||||
# 0 = in-order
|
# 0 = in-order
|
||||||
# 1 = reversed-order
|
# 1 = reversed-order
|
||||||
# 2 = random-order
|
# 2 = random-order
|
||||||
@@ -85,7 +90,7 @@ code = '''
|
|||||||
lfs_off_t i_
|
lfs_off_t i_
|
||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? 0
|
: (ORDER == 1) ? 0
|
||||||
: BENCH_PRNG(&prng) % (btree.weight+1);
|
: BENCH_PRNG(&prng) % (lfsr_btree_weight(&btree)+1);
|
||||||
lfsr_btree_push(&lfs, &btree, i_, LFSR_TAG_INLINED, 1,
|
lfsr_btree_push(&lfs, &btree, i_, LFSR_TAG_INLINED, 1,
|
||||||
&alphas[i % 26], 1) => 0;
|
&alphas[i % 26], 1) => 0;
|
||||||
}
|
}
|
||||||
@@ -105,8 +110,8 @@ code = '''
|
|||||||
lfs_size_t weight_;
|
lfs_size_t weight_;
|
||||||
|
|
||||||
lfsr_btree_get(&lfs, &btree, i,
|
lfsr_btree_get(&lfs, &btree, i,
|
||||||
&tag_, &id_, &weight_,
|
&id_, &tag_, &weight_,
|
||||||
buffer, 4) => 1;
|
buffer, 4, VALIDATE) => 1;
|
||||||
assert(tag_ == LFSR_TAG_INLINED);
|
assert(tag_ == LFSR_TAG_INLINED);
|
||||||
assert(id_ == i);
|
assert(id_ == i);
|
||||||
assert(weight_ == 1);
|
assert(weight_ == 1);
|
||||||
|
|||||||
+74
-129
@@ -27,7 +27,6 @@ code = '''
|
|||||||
.crc = 0,
|
.crc = 0,
|
||||||
.trunk = 0,
|
.trunk = 0,
|
||||||
.weight = 0,
|
.weight = 0,
|
||||||
.erased = true,
|
|
||||||
};
|
};
|
||||||
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
||||||
|
|
||||||
@@ -44,20 +43,19 @@ code = '''
|
|||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? (N-1-i)
|
: (ORDER == 1) ? (N-1-i)
|
||||||
: BENCH_PRNG(&prng) % N;
|
: BENCH_PRNG(&prng) % N;
|
||||||
attrs[i] = *LFSR_ATTR(
|
attrs[i] = LFSR_ATTR(-1, UATTR(i_ & 0xff), 0,
|
||||||
UATTR(i_ & 0xff), -1, "\xaa\xaa\xaa\xaa", 4,
|
"\xaa\xaa\xaa\xaa", 4);
|
||||||
(i+1 < N) ? &attrs[i+1] : NULL);
|
|
||||||
}
|
}
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd, attrs) => 0;
|
lfsr_rbyd_commit(&lfs, &rbyd, attrs, N) => 0;
|
||||||
} else {
|
} else {
|
||||||
for (lfs_size_t i = 0; i < N; i++) {
|
for (lfs_size_t i = 0; i < N; i++) {
|
||||||
lfs_off_t i_
|
lfs_off_t i_
|
||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? (N-1-i)
|
: (ORDER == 1) ? (N-1-i)
|
||||||
: BENCH_PRNG(&prng) % N;
|
: BENCH_PRNG(&prng) % N;
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS(
|
||||||
LFSR_ATTR(UATTR(i_ & 0xff), -1, "\xaa\xaa\xaa\xaa", 4,
|
LFSR_ATTR(-1, UATTR(i_ & 0xff), 0,
|
||||||
NULL)) => 0;
|
"\xaa\xaa\xaa\xaa", 4))) => 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BENCH_STOP();
|
BENCH_STOP();
|
||||||
@@ -87,7 +85,6 @@ code = '''
|
|||||||
.crc = 0,
|
.crc = 0,
|
||||||
.trunk = 0,
|
.trunk = 0,
|
||||||
.weight = 0,
|
.weight = 0,
|
||||||
.erased = true,
|
|
||||||
};
|
};
|
||||||
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
||||||
|
|
||||||
@@ -103,20 +100,19 @@ code = '''
|
|||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? (N-1-i)
|
: (ORDER == 1) ? (N-1-i)
|
||||||
: BENCH_PRNG(&prng) % N;
|
: BENCH_PRNG(&prng) % N;
|
||||||
attrs[i] = *LFSR_ATTR(
|
attrs[i] = LFSR_ATTR(-1, UATTR(i_ & 0xff), 0,
|
||||||
UATTR(i_ & 0xff), -1, "\xaa\xaa\xaa\xaa", 4,
|
"\xaa\xaa\xaa\xaa", 4);
|
||||||
(i+1 < N) ? &attrs[i+1] : NULL);
|
|
||||||
}
|
}
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd, attrs) => 0;
|
lfsr_rbyd_commit(&lfs, &rbyd, attrs, N) => 0;
|
||||||
} else {
|
} else {
|
||||||
for (lfs_size_t i = 0; i < N; i++) {
|
for (lfs_size_t i = 0; i < N; i++) {
|
||||||
lfs_off_t i_
|
lfs_off_t i_
|
||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? (N-1-i)
|
: (ORDER == 1) ? (N-1-i)
|
||||||
: BENCH_PRNG(&prng) % N;
|
: BENCH_PRNG(&prng) % N;
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS(
|
||||||
LFSR_ATTR(UATTR(i_ & 0xff), -1, "\xaa\xaa\xaa\xaa", 4,
|
LFSR_ATTR(-1, UATTR(i_ & 0xff), 0,
|
||||||
NULL)) => 0;
|
"\xaa\xaa\xaa\xaa", 4))) => 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -147,7 +143,6 @@ code = '''
|
|||||||
.crc = 0,
|
.crc = 0,
|
||||||
.trunk = 0,
|
.trunk = 0,
|
||||||
.weight = 0,
|
.weight = 0,
|
||||||
.erased = true,
|
|
||||||
};
|
};
|
||||||
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
||||||
|
|
||||||
@@ -163,20 +158,19 @@ code = '''
|
|||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? (N-1-i)
|
: (ORDER == 1) ? (N-1-i)
|
||||||
: BENCH_PRNG(&prng) % N;
|
: BENCH_PRNG(&prng) % N;
|
||||||
attrs[i] = *LFSR_ATTR(
|
attrs[i] = LFSR_ATTR(-1, UATTR(i_ & 0xff), 0,
|
||||||
UATTR(i_ & 0xff), -1, "\xaa\xaa\xaa\xaa", 4,
|
"\xaa\xaa\xaa\xaa", 4);
|
||||||
(i+1 < N) ? &attrs[i+1] : NULL);
|
|
||||||
}
|
}
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd, attrs) => 0;
|
lfsr_rbyd_commit(&lfs, &rbyd, attrs, N) => 0;
|
||||||
} else {
|
} else {
|
||||||
for (lfs_size_t i = 0; i < N; i++) {
|
for (lfs_size_t i = 0; i < N; i++) {
|
||||||
lfs_off_t i_
|
lfs_off_t i_
|
||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? (N-1-i)
|
: (ORDER == 1) ? (N-1-i)
|
||||||
: BENCH_PRNG(&prng) % N;
|
: BENCH_PRNG(&prng) % N;
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS(
|
||||||
LFSR_ATTR(UATTR(i_ & 0xff), -1, "\xaa\xaa\xaa\xaa", 4,
|
LFSR_ATTR(-1, UATTR(i_ & 0xff), 0,
|
||||||
NULL)) => 0;
|
"\xaa\xaa\xaa\xaa", 4))) => 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -187,11 +181,9 @@ code = '''
|
|||||||
lfsr_tag_t tag_;
|
lfsr_tag_t tag_;
|
||||||
lfs_ssize_t id_;
|
lfs_ssize_t id_;
|
||||||
lfs_size_t weight_;
|
lfs_size_t weight_;
|
||||||
lfs_off_t off_;
|
lfsr_data_t data_;
|
||||||
lfs_size_t size_;
|
int err = lfsr_rbyd_lookup(&lfs, &rbyd, -1, LFSR_TAG_UATTR(i_ & 0xff),
|
||||||
int err = lfsr_rbyd_lookup(&lfs, &rbyd,
|
&id_, &tag_, &weight_, &data_);
|
||||||
LFSR_TAG_UATTR(i_ & 0xff), -1,
|
|
||||||
&tag_, &id_, &weight_, &off_, &size_);
|
|
||||||
// note that random order may have some collisions
|
// note that random order may have some collisions
|
||||||
assert(!err || err == LFS_ERR_NOENT);
|
assert(!err || err == LFS_ERR_NOENT);
|
||||||
BENCH_STOP();
|
BENCH_STOP();
|
||||||
@@ -219,7 +211,6 @@ code = '''
|
|||||||
.crc = 0,
|
.crc = 0,
|
||||||
.trunk = 0,
|
.trunk = 0,
|
||||||
.weight = 0,
|
.weight = 0,
|
||||||
.erased = true,
|
|
||||||
};
|
};
|
||||||
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
||||||
|
|
||||||
@@ -235,20 +226,19 @@ code = '''
|
|||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? (N-1-i)
|
: (ORDER == 1) ? (N-1-i)
|
||||||
: BENCH_PRNG(&prng) % N;
|
: BENCH_PRNG(&prng) % N;
|
||||||
attrs[i] = *LFSR_ATTR(
|
attrs[i] = LFSR_ATTR(-1, UATTR(i_ & 0xff), 0,
|
||||||
UATTR(i_ & 0xff), -1, "\xaa\xaa\xaa\xaa", 4,
|
"\xaa\xaa\xaa\xaa", 4);
|
||||||
(i+1 < N) ? &attrs[i+1] : NULL);
|
|
||||||
}
|
}
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd, attrs) => 0;
|
lfsr_rbyd_commit(&lfs, &rbyd, attrs, N) => 0;
|
||||||
} else {
|
} else {
|
||||||
for (lfs_size_t i = 0; i < N; i++) {
|
for (lfs_size_t i = 0; i < N; i++) {
|
||||||
lfs_off_t i_
|
lfs_off_t i_
|
||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? (N-1-i)
|
: (ORDER == 1) ? (N-1-i)
|
||||||
: BENCH_PRNG(&prng) % N;
|
: BENCH_PRNG(&prng) % N;
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS(
|
||||||
LFSR_ATTR(UATTR(i_ & 0xff), -1, "\xaa\xaa\xaa\xaa", 4,
|
LFSR_ATTR(-1, UATTR(i_ & 0xff), 0,
|
||||||
NULL)) => 0;
|
"\xaa\xaa\xaa\xaa", 4))) => 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -256,12 +246,13 @@ code = '''
|
|||||||
|
|
||||||
BENCH_START();
|
BENCH_START();
|
||||||
lfs_off_t i_ = BENCH_PRNG(&prng) % N;
|
lfs_off_t i_ = BENCH_PRNG(&prng) % N;
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS(
|
||||||
LFSR_ATTR(UATTR(i_ & 0xff), -1, "\xbb\xbb\xbb\xbb", 4, NULL)) => 0;
|
LFSR_ATTR(-1, UATTR(i_ & 0xff), 0,
|
||||||
|
"\xbb\xbb\xbb\xbb", 4))) => 0;
|
||||||
BENCH_STOP();
|
BENCH_STOP();
|
||||||
|
|
||||||
uint8_t buffer[4];
|
uint8_t buffer[4];
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG_UATTR(i_ & 0xff), -1, buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, -1, LFSR_TAG_UATTR(i_ & 0xff), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xbb\xbb\xbb\xbb", 4) == 0);
|
assert(memcmp(buffer, "\xbb\xbb\xbb\xbb", 4) == 0);
|
||||||
'''
|
'''
|
||||||
|
|
||||||
@@ -287,7 +278,6 @@ code = '''
|
|||||||
.crc = 0,
|
.crc = 0,
|
||||||
.trunk = 0,
|
.trunk = 0,
|
||||||
.weight = 0,
|
.weight = 0,
|
||||||
.erased = true,
|
|
||||||
};
|
};
|
||||||
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
||||||
|
|
||||||
@@ -303,20 +293,19 @@ code = '''
|
|||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? (N-1-i)
|
: (ORDER == 1) ? (N-1-i)
|
||||||
: BENCH_PRNG(&prng) % N;
|
: BENCH_PRNG(&prng) % N;
|
||||||
attrs[i] = *LFSR_ATTR(
|
attrs[i] = LFSR_ATTR(-1, UATTR(i_ & 0xff), 0,
|
||||||
UATTR(i_ & 0xff), -1, "\xaa\xaa\xaa\xaa", 4,
|
"\xaa\xaa\xaa\xaa", 4);
|
||||||
(i+1 < N) ? &attrs[i+1] : NULL);
|
|
||||||
}
|
}
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd, attrs) => 0;
|
lfsr_rbyd_commit(&lfs, &rbyd, attrs, N) => 0;
|
||||||
} else {
|
} else {
|
||||||
for (lfs_size_t i = 0; i < N; i++) {
|
for (lfs_size_t i = 0; i < N; i++) {
|
||||||
lfs_off_t i_
|
lfs_off_t i_
|
||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? (N-1-i)
|
: (ORDER == 1) ? (N-1-i)
|
||||||
: BENCH_PRNG(&prng) % N;
|
: BENCH_PRNG(&prng) % N;
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS(
|
||||||
LFSR_ATTR(UATTR(i_ & 0xff), -1, "\xaa\xaa\xaa\xaa", 4,
|
LFSR_ATTR(-1, UATTR(i_ & 0xff), 0,
|
||||||
NULL)) => 0;
|
"\xaa\xaa\xaa\xaa", 4))) => 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -324,12 +313,12 @@ code = '''
|
|||||||
|
|
||||||
BENCH_START();
|
BENCH_START();
|
||||||
lfs_off_t i_ = BENCH_PRNG(&prng) % N;
|
lfs_off_t i_ = BENCH_PRNG(&prng) % N;
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS(
|
||||||
LFSR_ATTR(RMUATTR(i_ & 0xff), -1, NULL, 0, NULL)) => 0;
|
LFSR_ATTR(-1, RMUATTR(i_ & 0xff), 0, NULL, 0))) => 0;
|
||||||
BENCH_STOP();
|
BENCH_STOP();
|
||||||
|
|
||||||
uint8_t buffer[4];
|
uint8_t buffer[4];
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG_UATTR(i_ & 0xff), -1, buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, -1, LFSR_TAG_UATTR(i_ & 0xff), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
'''
|
'''
|
||||||
|
|
||||||
@@ -355,7 +344,6 @@ code = '''
|
|||||||
.crc = 0,
|
.crc = 0,
|
||||||
.trunk = 0,
|
.trunk = 0,
|
||||||
.weight = 0,
|
.weight = 0,
|
||||||
.erased = true,
|
|
||||||
};
|
};
|
||||||
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
||||||
|
|
||||||
@@ -364,30 +352,23 @@ code = '''
|
|||||||
uint32_t prng = 42;
|
uint32_t prng = 42;
|
||||||
BENCH_START();
|
BENCH_START();
|
||||||
if (COMMIT == 0) {
|
if (COMMIT == 0) {
|
||||||
struct lfsr_attr attrs[2*N];
|
struct lfsr_attr attrs[N];
|
||||||
for (lfs_size_t i = 0; i < N; i++) {
|
for (lfs_size_t i = 0; i < N; i++) {
|
||||||
lfs_off_t i_
|
lfs_off_t i_
|
||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? 0
|
: (ORDER == 1) ? 0
|
||||||
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
||||||
attrs[2*i+0] = *LFSR_ATTR(
|
attrs[i] = LFSR_ATTR(i_, MKREG, +1, "\xaa\xaa\xaa\xaa", 4);
|
||||||
GROW, i_, NULL, 1,
|
|
||||||
&attrs[2*i+1]);
|
|
||||||
attrs[2*i+1] = *LFSR_ATTR(
|
|
||||||
MKREG, i_, "\xaa\xaa\xaa\xaa", 4,
|
|
||||||
(i+1 < N) ? &attrs[2*i+2] : NULL);
|
|
||||||
}
|
}
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd, attrs) => 0;
|
lfsr_rbyd_commit(&lfs, &rbyd, attrs, N) => 0;
|
||||||
} else {
|
} else {
|
||||||
for (lfs_size_t i = 0; i < N; i++) {
|
for (lfs_size_t i = 0; i < N; i++) {
|
||||||
lfs_off_t i_
|
lfs_off_t i_
|
||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? 0
|
: (ORDER == 1) ? 0
|
||||||
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS(
|
||||||
LFSR_ATTR(GROW, i_, NULL, 1,
|
LFSR_ATTR(i_, MKREG, +1, "\xaa\xaa\xaa\xaa", 4))) => 0;
|
||||||
LFSR_ATTR(MKREG, i_, "\xaa\xaa\xaa\xaa", 4,
|
|
||||||
NULL))) => 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BENCH_STOP();
|
BENCH_STOP();
|
||||||
@@ -417,7 +398,6 @@ code = '''
|
|||||||
.crc = 0,
|
.crc = 0,
|
||||||
.trunk = 0,
|
.trunk = 0,
|
||||||
.weight = 0,
|
.weight = 0,
|
||||||
.erased = true,
|
|
||||||
};
|
};
|
||||||
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
||||||
|
|
||||||
@@ -425,30 +405,23 @@ code = '''
|
|||||||
// indexes within a valid range as the rbyd grows
|
// indexes within a valid range as the rbyd grows
|
||||||
uint32_t prng = 42;
|
uint32_t prng = 42;
|
||||||
if (COMMIT == 0) {
|
if (COMMIT == 0) {
|
||||||
struct lfsr_attr attrs[2*N];
|
struct lfsr_attr attrs[N];
|
||||||
for (lfs_size_t i = 0; i < N; i++) {
|
for (lfs_size_t i = 0; i < N; i++) {
|
||||||
lfs_off_t i_
|
lfs_off_t i_
|
||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? 0
|
: (ORDER == 1) ? 0
|
||||||
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
||||||
attrs[2*i+0] = *LFSR_ATTR(
|
attrs[i] = LFSR_ATTR(i_, MKREG, +1, "\xaa\xaa\xaa\xaa", 4);
|
||||||
GROW, i_, NULL, 1,
|
|
||||||
&attrs[2*i+1]);
|
|
||||||
attrs[2*i+1] = *LFSR_ATTR(
|
|
||||||
MKREG, i_, "\xaa\xaa\xaa\xaa", 4,
|
|
||||||
(i+1 < N) ? &attrs[2*i+2] : NULL);
|
|
||||||
}
|
}
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd, attrs) => 0;
|
lfsr_rbyd_commit(&lfs, &rbyd, attrs, N) => 0;
|
||||||
} else {
|
} else {
|
||||||
for (lfs_size_t i = 0; i < N; i++) {
|
for (lfs_size_t i = 0; i < N; i++) {
|
||||||
lfs_off_t i_
|
lfs_off_t i_
|
||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? 0
|
: (ORDER == 1) ? 0
|
||||||
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS(
|
||||||
LFSR_ATTR(GROW, i_, NULL, 1,
|
LFSR_ATTR(i_, MKREG, +1, "\xaa\xaa\xaa\xaa", 4))) => 0;
|
||||||
LFSR_ATTR(MKREG, i_, "\xaa\xaa\xaa\xaa", 4,
|
|
||||||
NULL))) => 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -479,7 +452,6 @@ code = '''
|
|||||||
.crc = 0,
|
.crc = 0,
|
||||||
.trunk = 0,
|
.trunk = 0,
|
||||||
.weight = 0,
|
.weight = 0,
|
||||||
.erased = true,
|
|
||||||
};
|
};
|
||||||
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
||||||
|
|
||||||
@@ -487,30 +459,23 @@ code = '''
|
|||||||
// indexes within a valid range as the rbyd grows
|
// indexes within a valid range as the rbyd grows
|
||||||
uint32_t prng = 42;
|
uint32_t prng = 42;
|
||||||
if (COMMIT == 0) {
|
if (COMMIT == 0) {
|
||||||
struct lfsr_attr attrs[2*N];
|
struct lfsr_attr attrs[N];
|
||||||
for (lfs_size_t i = 0; i < N; i++) {
|
for (lfs_size_t i = 0; i < N; i++) {
|
||||||
lfs_off_t i_
|
lfs_off_t i_
|
||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? 0
|
: (ORDER == 1) ? 0
|
||||||
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
||||||
attrs[2*i+0] = *LFSR_ATTR(
|
attrs[i] = LFSR_ATTR(i_, MKREG, +1, "\xaa\xaa\xaa\xaa", 4);
|
||||||
GROW, i_, NULL, 1,
|
|
||||||
&attrs[2*i+1]);
|
|
||||||
attrs[2*i+1] = *LFSR_ATTR(
|
|
||||||
MKREG, i_, "\xaa\xaa\xaa\xaa", 4,
|
|
||||||
(i+1 < N) ? &attrs[2*i+2] : NULL);
|
|
||||||
}
|
}
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd, attrs) => 0;
|
lfsr_rbyd_commit(&lfs, &rbyd, attrs, N) => 0;
|
||||||
} else {
|
} else {
|
||||||
for (lfs_size_t i = 0; i < N; i++) {
|
for (lfs_size_t i = 0; i < N; i++) {
|
||||||
lfs_off_t i_
|
lfs_off_t i_
|
||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? 0
|
: (ORDER == 1) ? 0
|
||||||
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS(
|
||||||
LFSR_ATTR(GROW, i_, NULL, 1,
|
LFSR_ATTR(i_, MKREG, +1, "\xaa\xaa\xaa\xaa", 4))) => 0;
|
||||||
LFSR_ATTR(MKREG, i_, "\xaa\xaa\xaa\xaa", 4,
|
|
||||||
NULL))) => 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -521,12 +486,11 @@ code = '''
|
|||||||
lfsr_tag_t tag_;
|
lfsr_tag_t tag_;
|
||||||
lfs_ssize_t id_;
|
lfs_ssize_t id_;
|
||||||
lfs_size_t weight_;
|
lfs_size_t weight_;
|
||||||
lfs_off_t off_;
|
lfsr_data_t data_;
|
||||||
lfs_size_t size_;
|
lfsr_rbyd_lookup(&lfs, &rbyd, i_, LFSR_TAG_REG,
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG_MKREG, i_,
|
&id_, &tag_, &weight_, &data_) => 0;
|
||||||
&tag_, &id_, &weight_, &off_, &size_) => 0;
|
|
||||||
assert(tag_ == LFSR_TAG_MKREG);
|
|
||||||
assert(id_ == i_);
|
assert(id_ == i_);
|
||||||
|
assert(tag_ == LFSR_TAG_REG);
|
||||||
BENCH_STOP();
|
BENCH_STOP();
|
||||||
'''
|
'''
|
||||||
|
|
||||||
@@ -552,7 +516,6 @@ code = '''
|
|||||||
.crc = 0,
|
.crc = 0,
|
||||||
.trunk = 0,
|
.trunk = 0,
|
||||||
.weight = 0,
|
.weight = 0,
|
||||||
.erased = true,
|
|
||||||
};
|
};
|
||||||
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
||||||
|
|
||||||
@@ -560,30 +523,23 @@ code = '''
|
|||||||
// indexes within a valid range as the rbyd grows
|
// indexes within a valid range as the rbyd grows
|
||||||
uint32_t prng = 42;
|
uint32_t prng = 42;
|
||||||
if (COMMIT == 0) {
|
if (COMMIT == 0) {
|
||||||
struct lfsr_attr attrs[2*N];
|
struct lfsr_attr attrs[N];
|
||||||
for (lfs_size_t i = 0; i < N; i++) {
|
for (lfs_size_t i = 0; i < N; i++) {
|
||||||
lfs_off_t i_
|
lfs_off_t i_
|
||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? 0
|
: (ORDER == 1) ? 0
|
||||||
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
||||||
attrs[2*i+0] = *LFSR_ATTR(
|
attrs[i] = LFSR_ATTR(i_, MKREG, +1, "\xaa\xaa\xaa\xaa", 4);
|
||||||
GROW, i_, NULL, 1,
|
|
||||||
&attrs[2*i+1]);
|
|
||||||
attrs[2*i+1] = *LFSR_ATTR(
|
|
||||||
MKREG, i_, "\xaa\xaa\xaa\xaa", 4,
|
|
||||||
(i+1 < N) ? &attrs[2*i+2] : NULL);
|
|
||||||
}
|
}
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd, attrs) => 0;
|
lfsr_rbyd_commit(&lfs, &rbyd, attrs, N) => 0;
|
||||||
} else {
|
} else {
|
||||||
for (lfs_size_t i = 0; i < N; i++) {
|
for (lfs_size_t i = 0; i < N; i++) {
|
||||||
lfs_off_t i_
|
lfs_off_t i_
|
||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? 0
|
: (ORDER == 1) ? 0
|
||||||
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS(
|
||||||
LFSR_ATTR(GROW, i_, NULL, 1,
|
LFSR_ATTR(i_, MKREG, +1, "\xaa\xaa\xaa\xaa", 4))) => 0;
|
||||||
LFSR_ATTR(MKREG, i_, "\xaa\xaa\xaa\xaa", 4,
|
|
||||||
NULL))) => 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -591,14 +547,12 @@ code = '''
|
|||||||
|
|
||||||
BENCH_START();
|
BENCH_START();
|
||||||
lfs_off_t i_ = BENCH_PRNG(&prng) % (N+1);
|
lfs_off_t i_ = BENCH_PRNG(&prng) % (N+1);
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS(
|
||||||
LFSR_ATTR(GROW, i_, NULL, 1,
|
LFSR_ATTR(i_, MKREG, +1, "\xbb\xbb\xbb\xbb", 4))) => 0;
|
||||||
LFSR_ATTR(MKREG, i_, "\xbb\xbb\xbb\xbb", 4,
|
|
||||||
NULL))) => 0;
|
|
||||||
BENCH_STOP();
|
BENCH_STOP();
|
||||||
|
|
||||||
uint8_t buffer[4];
|
uint8_t buffer[4];
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG_MKREG, i_, buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, i_, LFSR_TAG_REG, buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xbb\xbb\xbb\xbb", 4) == 0);
|
assert(memcmp(buffer, "\xbb\xbb\xbb\xbb", 4) == 0);
|
||||||
'''
|
'''
|
||||||
|
|
||||||
@@ -624,7 +578,6 @@ code = '''
|
|||||||
.crc = 0,
|
.crc = 0,
|
||||||
.trunk = 0,
|
.trunk = 0,
|
||||||
.weight = 0,
|
.weight = 0,
|
||||||
.erased = true,
|
|
||||||
};
|
};
|
||||||
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
||||||
|
|
||||||
@@ -632,30 +585,23 @@ code = '''
|
|||||||
// indexes within a valid range as the rbyd grows
|
// indexes within a valid range as the rbyd grows
|
||||||
uint32_t prng = 42;
|
uint32_t prng = 42;
|
||||||
if (COMMIT == 0) {
|
if (COMMIT == 0) {
|
||||||
struct lfsr_attr attrs[2*N];
|
struct lfsr_attr attrs[N];
|
||||||
for (lfs_size_t i = 0; i < N; i++) {
|
for (lfs_size_t i = 0; i < N; i++) {
|
||||||
lfs_off_t i_
|
lfs_off_t i_
|
||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? 0
|
: (ORDER == 1) ? 0
|
||||||
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
||||||
attrs[2*i+0] = *LFSR_ATTR(
|
attrs[i] = LFSR_ATTR(i_, MKREG, +1, "\xaa\xaa\xaa\xaa", 4);
|
||||||
GROW, i_, NULL, 1,
|
|
||||||
&attrs[2*i+1]);
|
|
||||||
attrs[2*i+1] = *LFSR_ATTR(
|
|
||||||
MKREG, i_, "\xaa\xaa\xaa\xaa", 4,
|
|
||||||
(i+1 < N) ? &attrs[2*i+2] : NULL);
|
|
||||||
}
|
}
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd, attrs) => 0;
|
lfsr_rbyd_commit(&lfs, &rbyd, attrs, N) => 0;
|
||||||
} else {
|
} else {
|
||||||
for (lfs_size_t i = 0; i < N; i++) {
|
for (lfs_size_t i = 0; i < N; i++) {
|
||||||
lfs_off_t i_
|
lfs_off_t i_
|
||||||
= (ORDER == 0) ? i
|
= (ORDER == 0) ? i
|
||||||
: (ORDER == 1) ? 0
|
: (ORDER == 1) ? 0
|
||||||
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
: BENCH_PRNG(&prng) % (rbyd.weight+1);
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS(
|
||||||
LFSR_ATTR(GROW, i_, NULL, 1,
|
LFSR_ATTR(i_, MKREG, +1, "\xaa\xaa\xaa\xaa", 4))) => 0;
|
||||||
LFSR_ATTR(MKREG, i_, "\xaa\xaa\xaa\xaa", 4,
|
|
||||||
NULL))) => 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -663,8 +609,7 @@ code = '''
|
|||||||
|
|
||||||
BENCH_START();
|
BENCH_START();
|
||||||
lfs_off_t i_ = BENCH_PRNG(&prng) % N;
|
lfs_off_t i_ = BENCH_PRNG(&prng) % N;
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd, LFSR_ATTRS(
|
||||||
LFSR_ATTR(SHRINK, i_, NULL, 1,
|
LFSR_ATTR(i_, MKUNR, -1, NULL, 0))) => 0;
|
||||||
NULL)) => 0;
|
|
||||||
BENCH_STOP();
|
BENCH_STOP();
|
||||||
'''
|
'''
|
||||||
|
|||||||
Reference in New Issue
Block a user