- 注册
- 2022/07/18
- 消息
- 15
- 金粒
- 7,850金粒
前言
JS测试代码
Function命令测试代码
插嘴
速度对比

结果
个人猜测
测试命令注册
- 有稍微深入了解的minecraft基岩版的哥哥姐姐们都知道在游戏里有function 提高强大的指令函数包调用功能;
- 这个教程是为了测试 function 与 lse. js 执行命令 谁更快?
JS测试代码
- (让监听破坏方块给最近玩家循环加分
- 指令测试为有效5000条!
- 监听分数变化后的结果输出耗时; );
JavaScript:
function onA_B(pl, bl) {
//mc.runcmdEx('say §aLSE执行命令 : ')
// for (let i = 1; i < 5000; i++) {
// mc.runcmdEx('scoreboard players add @p "tset" 1');
// }
mc.runcmdEx('say §b函数包执行命令 : ')
mc.runcmdEx('function test')
}
mc.listen('onDestroyBlock', onA_B);
function onScore(pl, num, name, disName) {
num == 1 ? mc.runcmdEx('test') : num == 4999 ? mc.runcmdEx('test') : {};
}
mc.listen('onScoreChanged', onScore);
Function命令测试代码
代码:
scoreboard players add @p "tset" 1
function test
插嘴
- 由于游戏原生规则限制 function 指令函数一次性最多执行10000命令 (测试修改世界NBT等办法, 无效);
速度对比
Lse.js执行耗时 | Function命令执行耗时 |
---|---|
62ms | 31ms |
62ms | 47ms |
63ms | 31ms |

结果
- 虽然看似函数包波动较大 但是执行数千条有效命令下 函数包执行命令几乎比Lse快1倍!!!
- (而且实际上function执行了10000条命令(因为函数包有两条命令 循环执行到一万条自动停止); 而lse只执行了4999条 (因为变量i 我定了1)
个人猜测
- 因为Function命令的函数系统更接近游戏底层 LSE执行应该是借助legacy-script-engine-quickjs插件再去加载JS插件 而后执行后台命令;
- (即使是用命令方块执行Function也是一样的 可能效率会更高);
- 所以如果你需要循环的 同时去执行数百上千的命令 用Function实际上效率会更高; add-on福音!
测试命令注册
JavaScript:
var cmdms;
function cmd() {
const cmd = mc.newCommand('test', "耗时检测", PermType.Any, 0x80);
cmd.overload();
cmd.setCallback((cmd, ori, out) => {
function a() {
mc.runcmdEx(`say 间隔 ${Date.now() - cmdms} ms`);
cmdms = undefined;
}
function b() {
cmdms = Date.now();
mc.runcmdEx('say 时间点已经设置, 等待第二次执行');
}
cmdms !== undefined ? a() : b();
});
cmd.setup();
}
mc.listen('onServerStarted', cmd);
- 内容版权许可
- CC BY-NC-SA 署名-非商业性使用-相同方式共享