Сергей Шпак
596 сообщений
#16 лет назад
Здравствуйте !

Сразу к делу, суть задачи :

Сгенерировать яваскриптом ~ 700 000 элемнтов div или td, всунуть их в страницу, при этом оставить браузер живим

Поиск результатов не дал, так же как и эксперименты.

Решаема ли задача ?

Спасибо за внимание с ув. Сергей.
Олег Ш.
10 сообщений
#16 лет назад
Интересный вопрос...
В общем у меня на слабой машинке больше 10 000 уже тормозит. Всё от CPU зависит в основном Используй AJAX, чтобы сразу готовый код грузить, или разбивай на отдельные страницы.
Хотя может и есть чисто JS решение
Александр Ж.
72 сообщения
#16 лет назад
Мне больше интересно даже не как решить эту задачу, а для чего её нужно решать?
Сергей Шпак
596 сообщений
#16 лет назад
To ovs :

тормозить начинает не из-за создания такого количества элементов, а из-за их внедрения в тело документа ( браузер начинает сильно много ресов кушать ).

Аякс, Серверная часть не помогут, разбиение на страницы увы не подходит.

Думаю задача сводится к тому, что бы на яваскрипте каким-то методом ( возможно нестандартным ) создавать элементы гораздо меньшего размера ( как-то их урезать)) ), нежели при использовании стандартных методов создания. Возможно я ошибаюсь.

To Spree : а мне как раз наоборот как ее решить
Oleksandr Rakovets
7 сообщений
#16 лет назад
Любой шестимегабайтовый файл (это только теги 700 тысяч дивов) будет тормозить в браузере, если еще и JS прибавить...
Так что такие масштабы необходимо переносить на серверную часть.
Если не секрет, скажите, пожалуйста, зачем Вам такие масштабы?
Сергеевич А.
791 сообщение
#16 лет назад
Цикл на 700 тысяч шагов)
куда проще
нагрузка все равно убийственная)
Олег Ш.
10 сообщений
#16 лет назад
Цитата ("-Caesar-"):

тормозить начинает не из-за создания такого количества элементов, а из-за их внедрения в тело документа ( браузер начинает сильно много ресов кушать ).

Ну тут основной прикол именно в JS. Без него просто относительно долго грузится. В общем, на машинке MacBook Pro 2.6GHz 2Gb работает. Для цикла, который 700 000 раз выводит: <div>Test</div>
)
Руслан Aia
51 сообщение
#16 лет назад
Из идей, разве что создание всех элементов не одни махом за цикл в 700 000.. а подгружая постепенно с перекурами Например через setTimeOut.. Т.е. в одном такте таймера подгружать не сильно много элементов, например 3000, чтобы браузер успевал в перекурах отвечать за запросы ОС. Но в любом случае, ресурсов при это скушается очень много. Тут действительно лучше бы на аяксе, подгружать только просматриваемую часть данных.
Дмитрий О.
771 сообщение
#16 лет назад
Вообще жуткая задача, у меня браузер не сразу очухался даже когда сгенерил. Результат измерения времени начала/конца выполнения:
2:19:15.609
2:19:57.312

делал "дедовским" innerHTML
Вадим С.
49 сообщений
#16 лет назад
Если много вложенных, то попробуйте сделать с помощью DocumentFragment () - как раз добавление элементов в тело документа будет происходить быстрее
Сергей Шпак
596 сообщений
#16 лет назад
То Phoenix_Ukraine :
понимаю что для более четкого решения,
Вам необходимо знать цели задачи, но пока все же это секрет

то RUSYA :
перекуры пробовал очень разнообразные, все мимо ...

Цитата ("franky"):
2:19:15.609
2:19:57.312

) у меня он не очухивался, за статистику спс, учту.

Буду пробовать DocumentFragment.
Дмитрий О.
771 сообщение
#16 лет назад
Как попробуете - отпишитесь, очень интересно какой из подходов реализуемый. Если будет интерес - скину свой код.
Забыл пояснить свои эксперименты:
время - это начало/конец выполнения;
Опера;
Атлон 2.5, 1.5Гб ОЗУ.
Сергей В.
244 сообщения
#16 лет назад
И все таки зачем нужно столько выводить элементов на страницу?
Сергей Шпак
596 сообщений
#16 лет назад
2 VistaSolutions
когда доведу до ума то что хотел, обязательно Вам покажу,
пока это останется загадкой, думаю вы меня поймете

После многократных попыток, консенсус не был найден,
задача ушла на второй план, до сих пор не реализована)
Сергей В.
244 сообщения
#16 лет назад
Но 700 000 элементов в браузер это много, это очень много
Максим В.
731 сообщение
#16 лет назад
А эти 700 000 элементов будут сразу в видимой части?
Сергей Шпак
596 сообщений
#16 лет назад
VeMax
что значит в видимой части ?
Сергей В.
244 сообщения
#16 лет назад
Я к тому и говорю, если не в видимой части то можно аяксом подгружать нужно, лишнее убирать
Владимир М.
327 сообщений
#16 лет назад
... как на google maps, например
Сергей Шпак
596 сообщений
#16 лет назад
Лишнего нет, аякс не катит ...