Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 29.12.2009, 09:44
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

frid-karatel,
попробуй разбить таблицу из 1000 строк на 10 таблиц из 100 строк.
Ответить с цитированием
  #12 (permalink)  
Старый 29.12.2009, 11:09
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Дело именно в отрисовке?
Попробуйте найти узкое место - запустите цикл "вхолостую", с записью не в innerHTML, а в какую-нибудь левую переменную;
в реальную таблицу, у которой display:none;
в реальную таблицу, у которой table-layout: fixed.

Просто возможно, что тормозит не математика и DOM, а reflow.
Ответить с цитированием
  #13 (permalink)  
Старый 29.12.2009, 13:04
Интересующийся
Отправить личное сообщение для frid-karatel Посмотреть профиль Найти все сообщения от frid-karatel
 
Регистрация: 28.12.2009
Сообщений: 14

Код:
TABLE.prototype.Print = function() {
  this.Sort();
  /*
  Сортировка по принципу вызова доп. функции к эл-ту
  т.е.
  if (a > b)
    return 1;
  else
    return -1;
  return 0;
  */
  for (ri = 0; ri < rc; ri++) {
    for (ci = 0; ci < cc; ci++) {
      switch(...) {
        /* как бы array.push(...) */
      }
    }
  }
  document.body.innerHTML = array.join('');
}


Вот результаты:
- Весь код ~ 296 мс
- Без вывода в innerHTML ~ 66 мс
- Без вывода в innerHTML + без сортировки ~ 12 мс
Ответить с цитированием
  #14 (permalink)  
Старый 29.12.2009, 14:48
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Дело в рендеринге. Быстрее, чем Fx сможет нарисовать эту таблицу, показаться она не сможет.

Кстати, я тут бенчмарк небольшой устроил — вывод таблицы 10×1000 занял…
Opera 10: 10 секунд
Opera 10.50a: 17 секунд (они делают ее медленнее?!)
Firefox 3.5: 24 секунды
Chrome: 4 секунды
IE8: 14 секунд
Ответить с цитированием
  #15 (permalink)  
Старый 29.12.2009, 14:54
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

а теперь сделай её фиксированой..
__________________
.ня
Ответить с цитированием
  #16 (permalink)  
Старый 29.12.2009, 15:01
Интересующийся
Отправить личное сообщение для frid-karatel Посмотреть профиль Найти все сообщения от frid-karatel
 
Регистрация: 28.12.2009
Сообщений: 14

Сообщение от tenshi Посмотреть сообщение
а теперь сделай её фиксированой..
В каком плане?

Кстати, был у меня интересный вариант в плане "усовершенствования"...
В частности, на C++ такой вариант работал - это создание сразу 1000 строк, а потом скрывать те, которые не нужны...

То есть создать один раз таблицу, а затем ее заполнять... Если строк всего 100 штук, то остальные 900 штук сделать display:none..

Как такой вариант?
Ответить с цитированием
  #17 (permalink)  
Старый 29.12.2009, 15:52
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от subzey
Кстати, я тут бенчмарк небольшой устроил — вывод таблицы 10×1000 занял…
А теперь 10 таблиц 10х100.
Ответить с цитированием
  #18 (permalink)  
Старый 29.12.2009, 15:54
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

table-layout:fixed
__________________
.ня
Ответить с цитированием
  #19 (permalink)  
Старый 29.12.2009, 17:35
Интересующийся
Отправить личное сообщение для frid-karatel Посмотреть профиль Найти все сообщения от frid-karatel
 
Регистрация: 28.12.2009
Сообщений: 14

Сообщение от tenshi Посмотреть сообщение
table-layout:fixed
В стилях это прописано

Блин, почему же у лиса такой "не шустрый" JS движок... мне кажется, это должно быть одним из основных направлений разработки браузеров, т.к. все активней используется генерация страницы на компьютере пользователя...

Вот запустил этот код на Chrome - 88 мс (!) против ~300 Firefox'а... капец...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменение ширины столбцов таблицы yngwie19 Элементы интерфейса 10 11.11.2009 17:22
смена фоновой картинки у таблицы cuberboy Общие вопросы Javascript 0 15.10.2009 23:06
Перемещение строк таблицы в Firefox barcelona jQuery 17 23.02.2009 15:41
Автоматическая подсветка строк таблицы mihha Элементы интерфейса 5 01.02.2009 01:28
Фиксированный заголовок таблицы ilshat Элементы интерфейса 6 20.12.2008 00:35