Skip to content

Commit c86418b

Browse files
committed
Merge branch 'fill-random-smaller' of https://github.com/gsauthof/fio
* 'fill-random-smaller' of https://github.com/gsauthof/fio: Simplify and optimize __fill_random_buf
2 parents 6608791 + 5366025 commit c86418b

File tree

1 file changed

+8
-19
lines changed

1 file changed

+8
-19
lines changed

lib/rand.c

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -97,29 +97,18 @@ void init_rand_seed(struct frand_state *state, uint64_t seed, bool use64)
9797

9898
void __fill_random_buf(void *buf, unsigned int len, uint64_t seed)
9999
{
100-
void *ptr = buf;
100+
uint64_t *b = buf;
101+
uint64_t *e = b + len / sizeof(*b);
102+
unsigned int rest = len % sizeof(*b);
101103

102-
while (len) {
103-
int this_len;
104-
105-
if (len >= sizeof(int64_t)) {
106-
*((int64_t *) ptr) = seed;
107-
this_len = sizeof(int64_t);
108-
} else if (len >= sizeof(int32_t)) {
109-
*((int32_t *) ptr) = seed;
110-
this_len = sizeof(int32_t);
111-
} else if (len >= sizeof(int16_t)) {
112-
*((int16_t *) ptr) = seed;
113-
this_len = sizeof(int16_t);
114-
} else {
115-
*((int8_t *) ptr) = seed;
116-
this_len = sizeof(int8_t);
117-
}
118-
ptr += this_len;
119-
len -= this_len;
104+
for (; b != e; ++b) {
105+
*b = seed;
120106
seed *= GOLDEN_RATIO_PRIME;
121107
seed >>= 3;
122108
}
109+
110+
if (fio_unlikely(rest))
111+
__builtin_memcpy(e, &seed, rest);
123112
}
124113

125114
uint64_t fill_random_buf(struct frand_state *fs, void *buf,

0 commit comments

Comments
 (0)