Комментарии 7
Производительность такого knockout дерева оставляет желать лучшего. Попробуйте на досуге создать дерево в 10 элементов первого уровня каждый из которого имеет по 30 ветвей каждая из которых имеет по 5 листьев.
+1
Ну как же не померять то, померял.
Ваш — 0,8-1,0с на хроме и к сожалению не работает в Fiddle на IE.
Мой, очень похожий код: jsfiddle.net/kuBXG/5/ от 0,8-1,0с секунды на хроме до 2,08-2,10с на IE10 (все мои клиенты на IE).
Вот казалось бы — 1500 объектов — это много и бывает нечасто, а секунда — это очень мало. Но у меня такое дерево — один из параметров виджета, а виджетов много, а терпения у пользователя мало, а ещё же данные самого виджета, не параметрами едиными… И вся эта радость на одном ядре потому что js. Ну и мерял я на коре какой-тотаммногомегагерц, а у соседа медленней, а значит у клиента на придушенном макафе компе ещё медленней. Может и специфика у меня такая, но я перешёл на серверный рендеринг сколь либо значимых списков.
PS: мерял так:
…
var startTime = new Date();
ko.applyBindings(vm);
vm.data(arr);
alert(((new Date() — startTime) / 1000)+«ms»);
Ваш — 0,8-1,0с на хроме и к сожалению не работает в Fiddle на IE.
Мой, очень похожий код: jsfiddle.net/kuBXG/5/ от 0,8-1,0с секунды на хроме до 2,08-2,10с на IE10 (все мои клиенты на IE).
Вот казалось бы — 1500 объектов — это много и бывает нечасто, а секунда — это очень мало. Но у меня такое дерево — один из параметров виджета, а виджетов много, а терпения у пользователя мало, а ещё же данные самого виджета, не параметрами едиными… И вся эта радость на одном ядре потому что js. Ну и мерял я на коре какой-тотаммногомегагерц, а у соседа медленней, а значит у клиента на придушенном макафе компе ещё медленней. Может и специфика у меня такая, но я перешёл на серверный рендеринг сколь либо значимых списков.
PS: мерял так:
…
var startTime = new Date();
ko.applyBindings(vm);
vm.data(arr);
alert(((new Date() — startTime) / 1000)+«ms»);
0
Статья без претензии на супер производительность. В большинстве случаев не надо никому копаться в дереве на 1500 узлов. Но если очень хочется можно прикрутить постепенную загрузку данных. Не обязательно рендерить все сразу.
Кроме того стоит попробовать подход использованный тут для таблиц. Говорят быстрее стандартных шаблонов в 10 раз. Я не пробовал и не вдавался. Я просто стараюсь не выводить сразу много данных.
Кроме того стоит попробовать подход использованный тут для таблиц. Говорят быстрее стандартных шаблонов в 10 раз. Я не пробовал и не вдавался. Я просто стараюсь не выводить сразу много данных.
+1
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.
Knockoutjs. «Растим» дерево