mirror of
https://github.com/overleaf/overleaf.git
synced 2024-12-26 10:43:18 +00:00
add benchmark script for hashing
This commit is contained in:
parent
b456ea726d
commit
7b6434ef81
1 changed files with 71 additions and 0 deletions
71
services/clsi/test/bench/hashbench.js
Normal file
71
services/clsi/test/bench/hashbench.js
Normal file
|
@ -0,0 +1,71 @@
|
|||
const ContentCacheManager = require('../../app/js/ContentCacheManager')
|
||||
const fs = require('fs')
|
||||
const crypto = require('crypto')
|
||||
const path = require('path')
|
||||
const os = require('os')
|
||||
const async = require('async')
|
||||
const _createHash = crypto.createHash
|
||||
|
||||
const files = process.argv.slice(2)
|
||||
|
||||
function test(hashType, filePath, callback) {
|
||||
// override the default hash in ContentCacheManager
|
||||
crypto.createHash = function (hash) {
|
||||
if (hashType === 'hmac-sha1') {
|
||||
return crypto.createHmac('sha1', 'a secret')
|
||||
}
|
||||
hash = hashType
|
||||
return _createHash(hash)
|
||||
}
|
||||
fs.mkdtemp(path.join(os.tmpdir(), 'pdfcache'), (err, dir) => {
|
||||
if (err) {
|
||||
return callback(err)
|
||||
}
|
||||
const t0 = process.hrtime.bigint()
|
||||
ContentCacheManager.update(dir, filePath, (x) => {
|
||||
const t1 = process.hrtime.bigint()
|
||||
const cold = Number(t1 - t0) / 1e6
|
||||
ContentCacheManager.update(dir, filePath, (x) => {
|
||||
const t2 = process.hrtime.bigint()
|
||||
const warm = Number(t2 - t1) / 1e6
|
||||
fs.rmdir(dir, { recursive: true }, (err) => {
|
||||
if (err) {
|
||||
return callback(err)
|
||||
}
|
||||
console.log(
|
||||
filePath,
|
||||
'hashType',
|
||||
hashType,
|
||||
'cold-start',
|
||||
cold.toFixed(2),
|
||||
'ms',
|
||||
'warm-start',
|
||||
warm.toFixed(2),
|
||||
'ms'
|
||||
)
|
||||
callback(null, [hashType, cold, warm])
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
var jobs = []
|
||||
files.forEach((file) => {
|
||||
jobs.push((cb) => {
|
||||
test('md5', file, cb)
|
||||
})
|
||||
jobs.push((cb) => {
|
||||
test('sha1', file, cb)
|
||||
})
|
||||
jobs.push((cb) => {
|
||||
test('hmac-sha1', file, cb)
|
||||
})
|
||||
jobs.push((cb) => {
|
||||
test('sha256', file, cb)
|
||||
})
|
||||
})
|
||||
|
||||
async.series(jobs, () => {
|
||||
console.log('DONE')
|
||||
})
|
Loading…
Reference in a new issue