20 lines
608 B
JavaScript
20 lines
608 B
JavaScript
|
var crypto = require('crypto')
|
|||
|
|
|||
|
if (crypto.randomFillSync) {
|
|||
|
// We reuse buffers with the same size to avoid memory fragmentations
|
|||
|
// for better performance
|
|||
|
var buffers = { }
|
|||
|
module.exports = function (bytes) {
|
|||
|
var buffer = buffers[bytes]
|
|||
|
if (!buffer) {
|
|||
|
// `Buffer.allocUnsafe()` faster because it don’t clean memory.
|
|||
|
// We do not need it, since we will fill memory with new bytes anyway.
|
|||
|
buffer = Buffer.allocUnsafe(bytes)
|
|||
|
if (bytes <= 255) buffers[bytes] = buffer
|
|||
|
}
|
|||
|
return crypto.randomFillSync(buffer)
|
|||
|
}
|
|||
|
} else {
|
|||
|
module.exports = crypto.randomBytes
|
|||
|
}
|