• 【MineBBS社区发展意见征集】

    欢迎参与MineBBS社区调查,助力打造更好Minecraft社区!完成问卷可获赠200金粒,优质回答可额外获得200金粒(限5名),快来参与吧!【点击参与】

教程 关于Bedrock block servers 的Function执行命令测试与LSE执行命令测试

Moonlight_uu

【Lv:3】

正式会员
注册
2022/07/18
消息
15
金粒
7,850金粒
前言
  • 有稍微深入了解的minecraft基岩版的哥哥姐姐们都知道在游戏里有function 提高强大的指令函数包调用功能;
  • 这个教程是为了测试 functionlse. 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命令执行耗时​
62ms31ms
62ms47ms
63ms31ms

1715317293521.png

结果
  • 虽然看似函数包波动较大 但是执行数千条有效命令下 函数包执行命令几乎比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 署名-非商业性使用-相同方式共享

在线会员

  • sssjiu
  • mame32p
  • isuo
  • 名の知れない人
  • 孤留月
  • mcsakiMio
  • Deep
  • 光与帆
  • 喵哒子sama
后退
顶部 底部