Как сделать emscripten для создания лучшего кода

Я много читал о том, насколько быстрым может быть код Emscripten, поэтому я решил преобразовать свое js-приложение в C ++, а затем скомпилировать в Emscripten. Я получил + 30% увеличения скорости, и это не то, чего я ожидал! (Я думал, что это будет по крайней мере 5-кратное увеличение скорости), поэтому я решил проверить скомпилированный код, и я увидел эту странную вещь!

Это оригинальный код метода (C ++, но он выглядит почти так же в оригинальном «медленном» приложении JS).

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

Это скомпилированная в emscripten версия 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;
}

Как видите, это далеко не оптимально.

Есть ли возможность сделать этот код немного более оптимальным? Я все еще надеюсь получить увеличение как минимум в 5 раз.

Спасибо!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector