Производительность knockout при большом количестве computable-свойств
Вложений: 1
Всем привет!
Вот примерчик: http://jsfiddle.net/4L30bknx/1/ . Там генерируется сетка зависимых полей, в каждом слое сетки 4 поля, в каждом следующем слое поля зависят от полей предыдущего слоя как-бы наискосок, получается что-то вроде крестиков (см. прикреплённый рисунок). "var i = 20" - это число слоёв. Дальше замеряется начальное время и в начале сетки меняются все четыре ячейки. Т. е. как бы замеряем время за которое сигнал пройдёт до конца сетки. Так вот проблема в том, что при изменении числа слоёв, производительность меняется явно не линейно: при 20 слоях - 200мс, при 24 - 1200, при 28 - комп зависает навечно. Реально ли как то избавиться от этого? Пробовал всякое типа такого: http://knockoutjs.com/documentation/...bservable.html , но толку нет (( . |
Тут нокаут не поможет. Нужен другой подход к вычислениям зависимых значений. Не городить зависимости а при каждом изменении начального значения вызывать функцию рекурсивного пересчёта всех остальных значений. А чтобы избежать повторных вычислений надо отсортировать поля по порядку вычислений. Тогда и зависимость будет линейной.
Или это просто эксперименты над нокаутом? |
Часовой пояс GMT +3, время: 08:19. |