我正在使用Jest测试自定义变压器的性能。目前,变换器只会返回它从Jest获取的代码。变换器已实现getCacheKey
功能。
这里是变压器的整个代码:
function process(src, path, config, transformOptions) {
return src;
}
exports.process = process;
function getCacheKey(fileData, filePath, configStr, options) {
return crypto.createHash('md5')
.update(fileData + filePath + configStr, 'utf8')
.digest('hex');
}
exports.getCacheKey = getCacheKey;
package.json
中的jest配置如下:
"jest": {
"transform": {
"^.+\\.tsx?$": "<rootDir>/ts-transformer.js"
},
"testMatch": [
"<rootDir>/test-jest/**/*.ts"
],
"moduleFileExtensions": [
"ts",
"tsx",
"js",
"json"
]
}
使用Jest测试此设置时,使用和不使用--no-cache
(大约9秒)需要相同的时间
使用Mocha测试此设置时,第一次运行大约需要7秒,后续运行大约需要4秒。
在这两种情况下(使用jest和mocha),后续运行都在不更改任何源或测试文件的情况下进行了测试。
我的问题:
答案 0 :(得分:0)
单独更新片段(fileData,filePath,configStr)可能会更快,因此不必在串联上复制文件内容。
function getCacheKey(fileData, filePath, configStr, options) {
const hash = crypto.createHash('md5');
hash.update(fileData);
hash.update(filePath);
hash.update(configStr);
return hash.digest('hex');
}
注意:如果未提供编码,并且数据是字符串,则编码为“utf8&#39;是强制执行。