Re[9]: Emscripten: LLVM to JavaScript compiler (C++ to JS)
От: Klikujiskaaan КНДР  
Дата: 26.06.15 16:13
Оценка:
Здравствуйте, Erop, Вы писали:

E>почему сайт, а не локальный клиент?



EP>Я имел в виду использование C++ как ядра приложения. То есть будет отдельно web-приложение, отдельно приложение для мобильных устройств (не-web), отдельно для десктопа. И везде ядро на C++.


К тому же пример со словарем — хреновый, там узким местом будет не язык, а база данных, имхо.
Re[7]: Emscripten: LLVM to JavaScript compiler (C++ to JS)
От: Evgeny.Panasyuk Россия  
Дата: 26.06.15 22:41
Оценка:
Здравствуйте, D. Mon, Вы писали:

EP>>Как я понял — там распаковка растрового изображения. Например как там представлено изображение — безликий массив скаляров или матрица пикселей? Какие массивы используются — "статически типизированные" или нет?

DM>Все на типизированных массивах. Картинка — массив байт.
DM>Исходники теста тут:
DM>http://data.infognition.com/spbench/haxe_asmjs_src.zip

1. Там ведь разный код — например в C++ версии пиксель это не очень удобные 3 байта, в версии Haxe — пиксель это Int32.
В C++ версии переход на следующий пиксель это (могло быть замыканием, кстати):
#define GO_NEXT_PIXEL     lasti = i; \
    x++; i += 3; \
    if (x>=X) { \
        x = 0; y++; \
        i = y*stride; \
    }
А в Haxe это просто di++ плюс иногда lasti = di — 1.

2. Код действительно очень низкого уровня — там фактически ручная нарезка на структуры, ручной инлайнинг и т.п. То есть это не "простой JS", а полностью вручную оптимизированный.
При этом в C++ версии можно подняться на более высокий уровень, ничего при этом не потеряв в скорости. Если же поднимать уровень в JS — то будут неизбежные тормоза.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.