mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 07:38:48 +00:00
Optimize default RNG for the common case
This commit is contained in:
@@ -86,6 +86,12 @@ default_random_generator_proc :: proc(data: rawptr, mode: Random_Generator_Mode,
|
|||||||
init(r, 0)
|
init(r, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch len(p) {
|
||||||
|
case size_of(u64):
|
||||||
|
// Fast path for a 64-bit destination.
|
||||||
|
(transmute(^u64)raw_data(p))^ = read_u64(r)
|
||||||
|
case:
|
||||||
|
// All other cases.
|
||||||
pos := i8(0)
|
pos := i8(0)
|
||||||
val := u64(0)
|
val := u64(0)
|
||||||
for &v in p {
|
for &v in p {
|
||||||
@@ -97,6 +103,7 @@ default_random_generator_proc :: proc(data: rawptr, mode: Random_Generator_Mode,
|
|||||||
val >>= 8
|
val >>= 8
|
||||||
pos -= 1
|
pos -= 1
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
case .Reset:
|
case .Reset:
|
||||||
seed: u64
|
seed: u64
|
||||||
|
|||||||
Reference in New Issue
Block a user