dt-sql-parser
dt-sql-parser copied to clipboard
Feat/benchmark
Support benchmark for all languages
使用
运行基准测试命令
pnpm run benchmark
终端中选择对应需要基准性能测试的SQL语言
配置信息
在benchmark/run.ts中维护配置信息
type TestFile = {
/** Benchmark Name */
name: string;
/** Test sql name */
sqlFileName: string;
/** Test run times */
loopTimes?: number;
/** Test method name of parser */
testTypes: string[];
/** Exclude languages */
excludes?: Language[];
/** Include languages */
includes?: Language[];
};
const testFiles: TestFile[] = [
{
name: 'Query Collection (100 Rows)',
sqlFileName: 'select.sql',
loopTimes: 3,
testTypes: ['validate', 'getAllTokens'],
excludes: ['plsql', 'postgresql'],
},
{
name: 'Select All Entities',
sqlFileName: 'select.sql',
loopTimes: 1,
testTypes: ['getAllEntities'],
includes: ['hive'],
},
{
name: 'Create Table (100 Rows)',
sqlFileName: 'create.sql',
loopTimes: 3,
testTypes: ['validate', 'getAllTokens'],
excludes: ['plsql', 'postgresql'],
},
];
注意点
默认对testTypes中的方法传入的参数为对应语言的sql字符串,如需自定义参数,在/benchmark/data/目录下新建params.json文件进行配置,如需取默认的sql参数,则可传入$sql,可参考如下
{
"create": {
"validate": ["$sql"],
"getAllTokens": ["$sql"],
"getAllEntities": ["$sql", { "lineNumber": 8, "column": 1 }]
},
"select": {
"validate": ["$sql"],
"getAllTokens": ["$sql"],
"getAllEntities": ["$sql", { "lineNumber": 8, "column": 1 }]
}
}
运行结果
默认不保存每次的测试结果,测试结果信息会保存在/benchmark/reports/xxx.benchmark.md,以下是一次结果案例
#247
@HaydenOrz @liuxy0551 新增了传入参数方式,看下是否符合场景