Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Самый быстрый javascript (https://javascript.ru/forum/offtopic/48553-samyjj-bystryjj-javascript.html)

l-liava-l 08.07.2014 14:05

Самый быстрый javascript
 
Доброго времени суток!

javascript сам по себе должен быть быстрым (потому что красный, вааагггхх), но в некоторых операциях хочется еще быстрее.

Есть огроооомный массив скомпилиных dom элементов. Какой самый быстрый способ добавлять их в dom, при этом очищая контейнер в который кладем.

Как ускорить аримф операции с большим кол-вом цифр? мож побитовым сдвигом?

В таких нагруженных прогах не кошерно делать доступ через свойства обьекта? нид кэшировать в переменных или нет?

Octane 08.07.2014 14:10

Цитата:

Сообщение от l-liava-l
Есть огроооомный массив скомпилиных dom элементов. Какой самый быстрый способ добавлять их в dom, при этом очищая контейнер в который кладем.

Помещаешь в нужное место <div style="display:none"> и апендишь в него свой documentFragment, потом по requestAnimationFrame показываешь этот блок.

kobezzza 08.07.2014 14:10

Пишешь на С/С++, компилишь в ASM.js и будет тебе всё очень быстро :)

Когда реализуют структуры, массивы структур и типы примитивных данных, то можно будет сразу на asm.js лабать, но пока это ад.

А вообще тема сферична в вакууме: не нужно быть маньяком оптимизаций, а нужно просто писать хороший читаемый код. Обычно если что-то тормозит, то виной кривой алгоритм, а не возня на уровне синтаксиса.

javascriptus-maximus-∆ 08.07.2014 14:35

я называю это перфеционанизмом
в принцепе это двигатель прогресса как и лень

melky 08.07.2014 15:20

Цитата:

Сообщение от kobezzza
Пишешь на С/С++,

вот верный ответ

точнее, пиши код статичным и низкоуровневым, а так же тестируй на бенчмарках.

Цитата:

Сообщение от l-liava-l
Как ускорить аримф операции с большим кол-вом цифр? мож побитовым сдвигом?

только замедлишь. лучше просто на 2 умножить

исчо было бы неплохо пользоваться поиском :)
http://javascript.ru/forum/misc/3944...-funkcijj.html

MallSerg 11.07.2014 00:54

1. Преждевременная оптимизация зло. лучшее враг хорошего
2. Любая оптимизация начинается с нахождения узких мест (профилирование)
для этого существуют специальные инструменты встроенные в браузер
иначе можно потратить кучу времени на оптимизацию процесса который на 0.0001% влияет на производительность

DjDiablo 11.07.2014 06:22

Цитата:

Какой самый быстрый способ добавлять их в dom, при этом очищая контейнер в который кладем.
Полно бенчарков. Но если в вкратце то когда элемент пустой то самый быстрый способ наполнить его это innerHTML, если изменить добавить/удалить что-то в непустом то при относительно небольшом количестве изменений это createElement/removeElement. С другой стороны innerHtml в последней версии firefox работает почти в 10 раз медленней, а вот в ie напротив innerHTML ощутимо вырывается вперед. Иными словами наиболее быстрый способ вставки будет зависеть от браузера.

Цитата:

Есть огроооомный массив скомпилиных dom элементов.
Если массив дум элементов реально огромный то ты уже накосячил. К примеру как быстро отрисовать таблицу из 100 000 строк ? Да очень просто, отрисуй только те строки которые должны быть видны на экране сейчас. У меня была такая задача, реально 100 000 отрисовываются и скроляться без малейших тормозов, Даже фильтрация с сортировкой работает в приемлемое время. Это возможно только потому что сортируется/фильтруется массив с данными а в дум попадает только крохотный фрагмент массива из 40 элементов способных вместится в экран. То есть нет никакого огромного массива скомпилинных дум элементов, мне хватает всего 40. Правда загрузка на клиент такой кучи данных дело весьма не быстрое и по уму все сортировки и фильтрации следовало бы делать силами БД, но в ТЗ требовали обязательно на клиенте.

Цитата:

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

В остальном.
Согласен c MailSerg, нужно искать узкие места через профилирование.
Согласен с kobezza. Если действительно есть потребность в максимально производительной работе с данными то это asm.js.

Стоит отметить что виртуальная машина Dart на 50% быстрее чем V8.


Часовой пояс GMT +3, время: 09:56.