Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.01.2015, 15:16
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Производительность knockout при большом количестве computable-свойств
Всем привет!

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

Последний раз редактировалось Riim, 18.01.2015 в 15:21.
Ответить с цитированием
  #2 (permalink)  
Старый 20.01.2015, 05:35
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

Тут нокаут не поможет. Нужен другой подход к вычислениям зависимых значений. Не городить зависимости а при каждом изменении начального значения вызывать функцию рекурсивного пересчёта всех остальных значений. А чтобы избежать повторных вычислений надо отсортировать поля по порядку вычислений. Тогда и зависимость будет линейной.
Или это просто эксперименты над нокаутом?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выдать список всех свойств указанного при вводе объекта указанного фрейма flasher167 Общие вопросы Javascript 11 05.04.2013 08:14
Изменение свойств одного блока при наведении курсора на другой latter-day Events/DOM/Window 4 01.04.2013 18:35
При нажатии на маленькую картинку она появлялась в большом окне frost18 Элементы интерфейса 3 20.07.2011 14:32