Pull to refresh

Comments 22

Идиотское название, если честно. Или там действительно какой-то FFI?
Ссылочку выше дали. Ну или en.wikipedia.org/wiki/Foreign_function_interface.

Кусок из поста, который ввел меня в заблуждение
>> Это расширение называется FFI

Это не расширение так называется, которое позволяет делать быстрые malloc, а технология написания расширений. В том числе и вот того, которое в статье приведено.
Уверен, и в Джаваскрипте есть куда оптимизировать)
Почему бы вам не выложить всё это на ГитХаб?
Зачем? Это же простой пример рейтрейсера который можно написать за полдня.
У вас есть пример Рейтрейсера на JS + два примера на Lua. К примеру, я бы зашёл и обнаружил, что вы пошли очень неоптимальным путём в JS и повысил бы скорость с 20к до 50к, потом кто-то бы добавил код на Java, которая выдает 60к и т.д.

В конце концов, если это просто простой пример рейтрейсера, то зачем его вообще делать? ;)

Я бы посмотрел на исходники в удобном виде.
Если это выложить не гитхаб, то через некоторое время у вас будет полноценный рендер на javascript
Вот теперь я доволен результами теста. Спасибо =)
Чем вы довольны? Тем, что в Lua оказались серьезные проблемы с массивами/аллокацией, которых удается избежать даже в джаваскрипте, при том, что в последнем внешне массивы устроены также (массив — одновременно hash)? И что эти проблемы лечатся только низкоуровневыми хаками?

Вообще крайней странная идея совмещать вектор и хэш, зачем это надо было — неизвестно, а к чему приводит — вот, хорошо видно.
Идея, может быть, неортодоксальная, но работает отлично.

Просто не нужно её насиловать.

Если пишете код на Луа, нужно писать код на Луа, а не имитировать яваскрипт и удивляться, почему всё так плохо работает.
А что мешает преаллоцировать массивы в JavaScript и использовать там же иные оптимизации?
Выложите трейсеры в GitHub-репозиторий.
читерство :-)

в браузерах есть webgl typed arrays (new Float64Array(length)), но Crankshaft их еще не оптимизирует, но будет.
Lua даже не знает, что индексы массива — числа в диапазоне 1..n, а значения — целые числа, поэтому ему приходится рассчитывать на худший вариант когда однажды в массив запишут вот так:

a['qqq'] = {red = 1, green = 0.5, blue = 0.8}


Это, мягко говоря, неверно. В реализации таблиц в Луа есть оптимизация для поддержки массивов с целочисленными ключами. С этим там хорошо и быстро.
Другое дело, что хранить массив пикселей в луашной таблице — в принципе странное решение.

Если нужно работать с такого рода вещами (и нет под рукой LuaJIT b6), нужно писать модуль на C. Это — нормально и ожидаемо.
А держать каждый пиксель как подтаблицу — тем более странное решение.
Sign up to leave a comment.

Articles