如何使脚本生成更好的代码

时间:2018-10-20 10:34:10

标签: javascript c++ optimization emscripten asm.js

我已经阅读了很多有关Emscripten代码的速度的信息,因此我决定将js应用程序转换为C ++,然后编译为Emscripten。我的速度提高了约30%,这不是我期望的! (我认为速度至少会提高5倍),所以我决定检查编译后的代码,然后看到了这个奇怪的东西!

这是原始的方法代码(C ++,但是在原始的“慢速” JS应用程序中看起来几乎一样)。

void Op2B()
{
    sm = (sm - 1) & 65535;
    t->time += 2;
}

这是相同代码的经过脚本编译的asm.js版本

function __ZN16EpsilonGames_VGS3Z804Op2BEv($0) {
    $0 = $0|0;
    var $1 = 0, $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
    sp = STACKTOP;
    STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
    $1 = $0;
    $2 = $1;
    $3 = ((($2)) + 24|0);
    $4 = load4($3);
    $5 = (($4) - 1)|0;
    $6 = $5 & 65535;
    $7 = ((($2)) + 24|0);
    store4($7,$6);
    $8 = load4($2);
    $9 = load4($8);
    $10 = (($9) + 2)|0;
    store4($8,$10);
    STACKTOP = sp;return;
}

如您所见,它离理想还很遥远。

是否有可能使此代码更优化?我仍然希望速度至少提高x5。

谢谢!

0 个答案:

没有答案