23.04.2012, 11:45
|
Профессор
|
|
Регистрация: 02.07.2010
Сообщений: 642
|
|
Сообщение от trikadin
|
Маэстро, на клиенте, конечно...
|
Спасибо за тесты. Я тоже такие делал, в том числе задавал и 100 тыс. строк и 1000 строк на 1000 столбцов. К сожалению, на больших массивах данных вычисления на сервере выигрывают перед вычислениями на клиенте, т.к. на сервере всё считает SQL-запрос в БД на приличном сервере. И вычисления занимают 1 сек. по сравнению с 10 сек. на клиенте (в некоторых задачах). Поэтому я всё еще думаю...
P.S. 100 тыс. строк - не перебор. В товарном справочнике предприятия более 140 тыс. наименований.
|
|
23.04.2012, 12:13
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,588
|
|
По поводу вычислений - именно на клиенте. Любые вычисления не требующие серьёзной рекурсии выполняются очень быстро. Но надо понимать что именно вычисления, ни в коем случае нельзя дёргать документ до того как всё будет посчитано. Все вычисляемые цифры до окончательного вывода должны содержаться в js и тогда всё булет быстро.
Сообщение от Маэстро
|
Я тоже так раньше думал. Но это жить как я говорю "без любви к людям". Учусь у Гугла. Знаете сколько серверов у Гугла? - Говорят больше миллиона. Если бы Гугл сказал: мы сделали классный поисковый механизм, а то что оно медленно отображает информацию на вашем компьютере - это ваши проблемы! Покупайте новый компьютер! Если бы Гугл сказал, что медленный интернет - это ваши проблемы! и т.д.... - мы бы Гугл не уважали. А мы уважаем. За что? -За то, что они думают в первую очередь о пользователях.
P.S. Гуглу легче. У него милли...милли...миллиарды $
|
А вы не заметили что последнее время гугл, с*ка, тормозит?
Навесили овер9000 свистоперделок. Приходится на нём js отключенным держать, чтоб по-человечески работал. =(
__________________
29375, 35
|
|
23.04.2012, 13:01
|
Профессор
|
|
Регистрация: 02.07.2010
Сообщений: 642
|
|
Сообщение от Aetae
|
По поводу вычислений - именно на клиенте. Любые вычисления не требующие серьёзной рекурсии выполняются очень быстро. Но надо понимать что именно вычисления, ни в коем случае нельзя дёргать документ до того как всё будет посчитано. Все вычисляемые цифры до окончательного вывода должны содержаться в js и тогда всё булет быстро.
|
Не любые. И даже без рекурсии. Есть категория вычислений, которые точно надо считать на сервере, либо разделять на часть тут, часть там.
Пример.
Менеджер хочет знать, на какую сумму товара хранится на складе по разделам:
-телевизоры
-стиральные машинки
-холодильники
-CD-плееры
- ... итого 30 разделов.
В каждом разделе грубо говоря по 1000 наименований.
Как будем считать? Сразу думаю, что глупо гнать на клиента 30х1000=30 тыс. строк, чтобы посчитать в JS. В данном случае надо на сервере с помощью SQL-запроса посчитать суммы товаров по разделам, а на клиента отправить только 30 строк, на котором уже можно получить их общую сумму.
Поэтому вопрос, поднятый в моей теме я трансформирую уже несколько по-другому: Каков строгий критерий разделения такого рода задач на задачи, решаемые на клиенте и на задачи, решаемые на сервере?
|
|
23.04.2012, 13:11
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,588
|
|
>Каков строгий критерий
Логика.
Какой-то выверенной годами истины в данном вопросе нет.(разве что в каких-нить новых забугорных книжках)
__________________
29375, 35
|
|
23.04.2012, 14:10
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Сообщение от trikadin
|
dmitriymar, в js есть функция toFixed, с её помощью можно вполне сделать вычисления удовлетворяюще точными.
|
далеко не всегда
|
|
23.04.2012, 15:21
|
Профессор
|
|
Регистрация: 02.07.2010
Сообщений: 642
|
|
Сообщение от trikadin
|
var log = document.createDocumentFragment();
|
А Илья Кантор говорит, что " Фрагмент документа ничего не оптимизирует сам по себе, он не быстрее обычного документа"
http://javascript.ru/optimize/documentfragment-0
|
|
23.04.2012, 21:07
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
Маэстро, сравнивать надо не "1) Сначала всё в строку" и "2) Сначала всё в documentFragment", а с первым примером, 1) и 2) это разные варианты реализации того, как можно добавить в документ элементы одним действием.
|
|
23.04.2012, 21:14
|
Профессор
|
|
Регистрация: 02.07.2010
Сообщений: 642
|
|
Сообщение от Octane
|
Маэстро, сравнивать надо не "1) Сначала всё в строку" и "2) Сначала всё в documentFragment", а с первым примером, 1) и 2) это разные варианты реализации того, как можно добавить в документ элементы одним действием.
|
Та яж не придираюсь! Яж шучу... Просто было хорошее настроение и процитировал Илью Кантора, потому что вспомнил армейский анекдот:
-Товарищ старшина, а крокодилы летают?
-Вы что, рядовой, конечно же нет!
-Да? А товарищ полковник, сказал, что летают!
-Даа?? Аа... ну да... летают... только низенько низенько...
|
|
23.04.2012, 22:42
|
Профессор
|
|
Регистрация: 04.02.2011
Сообщений: 1,815
|
|
Вот во всей этой проблеме я искренне немогу понять, зачем вы таблицу из 5000 строк единовременно клиенту отдаёте. (пост 10)
Что пейджинг c фильтрами уже не моден ? Теперь круто получить HTML'ку этак высотой в 80 экранов ?
Если отдавать информацию небольшими блоками, то и проблема с тем где производить расчёты станет неактуальной, так как и на сервере и на клиенте они будут происходить мгновенно. Ну для полного кайфа вынесете расчёты на клиент, на любой машине 100 строк не окажут заметного влияния на производительность.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
Последний раз редактировалось DjDiablo, 23.04.2012 в 22:47.
|
|
23.04.2012, 23:40
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Сообщение от dmitriymar
|
далеко не всегда
|
Можно пример?
DjDiablo, +1. Комп стандартной мощности верстать таблицу > 10000 ячеек будет долго.
Последний раз редактировалось trikadin, 23.04.2012 в 23:43.
|
|
|
|