mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-29 02:53:48 -05:00
Merge pull request #19057 from overleaf/mj-benchmark-seed-random
[web] Add quick and dirty PRNG for seeding benchmark runs GitOrigin-RevId: 079f9b565f17b44d7062f6b93c26f694e486c6b9
This commit is contained in:
parent
a8cb423078
commit
94694a6385
2 changed files with 27 additions and 2 deletions
19
services/web/scripts/lezer-latex/random.mjs
Normal file
19
services/web/scripts/lezer-latex/random.mjs
Normal file
|
@ -0,0 +1,19 @@
|
|||
// Super quick and dirty LCG PRNG
|
||||
|
||||
const m = 0xffffffff
|
||||
let X = Math.floor(Math.random() * (m - 1))
|
||||
const a = 16807
|
||||
const c = 0
|
||||
|
||||
// Should probably be a large-ish number
|
||||
export function seed(i) {
|
||||
if (i < 0) {
|
||||
throw new Error('Seed must be a positive integer')
|
||||
}
|
||||
X = i & m
|
||||
}
|
||||
|
||||
export function random() {
|
||||
X = (a * X + c) % m
|
||||
return X / m
|
||||
}
|
|
@ -5,10 +5,16 @@ import * as path from 'path'
|
|||
import { fileURLToPath } from 'url'
|
||||
import { TreeFragment } from '@lezer/common'
|
||||
import minimist from 'minimist'
|
||||
import { seed, random } from './random.mjs'
|
||||
|
||||
const argv = minimist(process.argv.slice(2))
|
||||
const NUMBER_OF_OPS = argv.ops || 1000
|
||||
const CSV_OUTPUT = argv.csv || false
|
||||
const SEED = argv.seed
|
||||
|
||||
if (SEED) {
|
||||
seed(SEED)
|
||||
}
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
||||
|
||||
|
@ -108,13 +114,13 @@ function writeTextAt(document, position, text) {
|
|||
|
||||
function randomInsertions(document, num) {
|
||||
return timedChanges(document, num, currentDoc =>
|
||||
insertAt(currentDoc, Math.floor(Math.random() * currentDoc.length), 'a')
|
||||
insertAt(currentDoc, Math.floor(random() * currentDoc.length), 'a')
|
||||
)
|
||||
}
|
||||
|
||||
function randomDeletions(document, num) {
|
||||
return timedChanges(document, num, currentDoc =>
|
||||
deleteAt(currentDoc, Math.floor(Math.random() * currentDoc.length), 1)
|
||||
deleteAt(currentDoc, Math.floor(random() * currentDoc.length), 1)
|
||||
)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue