You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用jsben.ch或同类工具对比JSONata性能?

对比JSONata语句性能的简便方案

方案1:浏览器端手动编写测试脚本

不需要依赖第三方工具,自己写几行代码就能快速测试:

  1. 新建本地HTML文件,引入JSONata的CDN脚本
  2. 用浏览器原生的performance.now()统计执行时间,通过循环多次执行目标语句减少误差

示例代码:

<!DOCTYPE html>
<html>
<body>
<script src="https://cdn.jsdelivr.net/npm/jsonata@latest"></script>
<script>
// 测试用的JSON数据
const testData = {
  users: Array.from({length: 1000}, (_, i) => ({id: i, name: `User${i}`, age: 20 + i%20}))
};

// 要对比的JSONata语句(提前编译避免重复解析开销)
const expr1 = jsonata('users[age > 30].name');
const expr2 = jsonata('users.$filter(function($v) { $v.age > 30 }).name');

// 通用测试函数
function testExpr(expr, data, iterations = 1000) {
  const start = performance.now();
  for (let i = 0; i < iterations; i++) {
    expr.evaluate(data);
  }
  const end = performance.now();
  return (end - start) / iterations; // 返回单次执行平均耗时(毫秒)
}

// 执行测试并输出结果
console.log(`Expr1 平均耗时: ${testExpr(expr1, testData).toFixed(6)}ms`);
console.log(`Expr2 平均耗时: ${testExpr(expr2, testData).toFixed(6)}ms`);
</script>
</body>
</html>

直接在浏览器打开该文件,查看控制台输出即可。

方案2:Node.js本地测试

适合批量测试或需要更高精度计时的场景:

  1. 先安装JSONata依赖:npm install jsonata
  2. 编写Node.js脚本,用console.time()或process.hrtime()计时

示例代码:

const jsonata = require('jsonata');

// 测试数据
const testData = {
  users: Array.from({length: 1000}, (_, i) => ({id: i, name: `User${i}`, age: 20 + i%20}))
};

// 编译要对比的表达式
const expr1 = jsonata('users[age > 30].name');
const expr2 = jsonata('users.$filter(function($v) { $v.age > 30 }).name');

const iterations = 10000;

// 测试第一个表达式
console.time('Expr1 总耗时');
for (let i = 0; i < iterations; i++) {
  expr1.evaluate(testData);
}
const total1 = console.timeEnd('Expr1 总耗时');
console.log(`Expr1 单次平均: ${(total1 / iterations).toFixed(6)}ms`);

// 测试第二个表达式
console.time('Expr2 总耗时');
for (let i = 0; i < iterations; i++) {
  expr2.evaluate(testData);
}
const total2 = console.timeEnd('Expr2 总耗时');
console.log(`Expr2 单次平均: ${(total2 / iterations).toFixed(6)}ms`);

运行脚本:node jsonata-performance-test.js,查看终端输出。

方案3:修复jsben.ch的库引入问题

如果偏好jsben.ch的可视化界面,手动添加JSONata的CDN地址即可解决库找不到的问题:

  1. 打开jsben.ch,点击右上角「Settings」
  2. 在「External Scripts」输入框中填入JSONata的CDN链接
  3. 保存设置后,就能在测试代码中直接调用jsonata()函数

内容的提问来源于stack exchange,提问作者Dietrich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 01:45:38