Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.11.13;
Скачать: CL | DM;

Вниз

Эх так приятно, когда...   Найти похожие ветки 

 
Дмитрий С ©   (2011-07-15 14:39) [0]

... когда оптимизация процедуры действует так, что она вместо 40 секунд выполняется 0.4, жертвуя всего лишь 400кб оперативки :)
А вам когда приятно?


 
SQLEXPRESS   (2011-07-15 14:40) [1]

а кто стесняется если сказать, что говорить?


 
TUser ©   (2011-07-15 14:47) [2]

чаще - когда вместо года получается минута, жертвуя всего лишь 10% точности ))


 
MonoLife ©   (2011-07-15 15:33) [3]


> А вам когда приятно?

провокационный вопрос:)


 
И. Павел ©   (2011-07-15 15:54) [4]

> А вам когда приятно?

В пятницу в 15:59 весьма приятно, и, думаю, не мне одному :)


 
SQLEXPRESS   (2011-07-15 16:08) [5]

У Вас, сударь, часы на 5 минут вперед от православного :)


 
Jeer ©   (2011-07-15 16:11) [6]


> А вам когда приятно?


В созерцании красоты.
Это может быть девушка рядом или результат аскетичного кодинга :)


 
_Юрий   (2011-07-15 19:14) [7]

Если такой выигрыш в скорости, правильнее назвать это не оптимизацией, а исправлением ошибки.


 
Rouse_ ©   (2011-07-15 19:30) [8]

Прирост с 40 до 0,4 весьма значителен - поздравляю.
Мы тут тоже с Ega23 неделю бились над загрузкой большого блока данных и разворачивание его в памяти (оптимизация загрузки древовидного блока данных из ~ 16 миллионов не сортированных узлов, каждый из которых за собой тянет блоки несортированных данных в подузлах размером от 4 байт до 39Кб с сортировкой при загрузке + второе дерево рефов на узлы основного). В итоге оптимизировали скорость загрузки с ~35 минут до полутора секунд (минус затраты на зачитку данных с файлов - от секунды, до восьми... тут все от кэша системы зависит)


 
Дмитрий С ©   (2011-07-15 19:59) [9]


> Rouse_ ©   (15.07.11 19:30) [8]

Я сначала не прочитал то что в последних скобках, подумал нихрена себе чтение порядка 100МБ в сек:)) Круто, блин, это всегда приятно:)
А кстати как дерево организовано? Id, ParentId ? Или NestedSets ?


 
Rouse_ ©   (2011-07-15 20:09) [10]

Id, ParentId.
работа без реаллоков памяти тупо считываем все и ручками расставляем указатели на правильный элемент в Raw буфере


 
b z   (2011-07-15 20:29) [11]


> [8]
А что за задача? ну если не секрет. :)


 
Дмитрий С ©   (2011-07-15 20:36) [12]


> Rouse_ ©   (15.07.11 20:09) [10]

Такая идея сразу в голову приходит, а если еще таблицу смещений в этом Raw буфере закешировать на диске, да и еще и в правильном порядке?


 
Jeer ©   (2011-07-15 20:49) [13]


> Rouse_ ©   (15.07.11 20:09) [10]
>
> Id, ParentId.
> работа без реаллоков памяти тупо считываем все


Примерно так же удалось оптимизировать работу обычного TTreeView, допиленного до DBTreeView. В конце концов наступил пипец при числе узлов свыше десятков тыщ.
В итоге, через линейную адресацию и "ручную" расстановку айтемов в нужные позиции удалось на два порядка повысить скорость. В итоге древовидно-реляционное видение базы для пользователя (и для программных дел) при числе узлов до миллиона происходит за секунды вместо десятков минут.


 
Rouse_ ©   (2011-07-15 21:15) [14]


> b z   (15.07.11 20:29) [11]
> А что за задача? ну если не секрет. :)

ИСС банальный. Текстовых данных ~13 гектаров + каждый месяц прирост по 500 метров. Грузить индекс нужно при старте.

> Дмитрий С ©   (15.07.11 20:36) [12]
а если еще таблицу смещений
> в этом Raw буфере закешировать на диск

это тоже часть алгоритма :)


> Jeer ©   (15.07.11 20:49) [13]

Самый геморой тут был в том что Дельфя пыталась помогать, т.е. нужно было обойти лишние _Move/_CopyRecord и т.д. и естественно отойти от идеологии TMyObject.LoadFromStream - ибо зачем копировать данные в свой обьект, если данные уже есть в памяти... Ну а дальше все само-собой.


 
Дмитрий С ©   (2011-07-15 21:28) [15]


> Jeer ©   (15.07.11 20:49) [13]

А зачем нужен Treeview в миллионами элементов? Пользователь всеравно все не сможет посмотреть.


 
Rouse_ ©   (2011-07-15 22:30) [16]


> Дмитрий С ©   (15.07.11 21:28) [15]
> А зачем нужен Treeview в миллионами элементов?

Это-ж дерево а не список, представь что в руте всего 5 элементов и в чайлдах тоже пять, и так далее рекурсивно... Пользователь видит только необходимые ему 5 штук и все... Ну хотя опять-же, все зависит от задачи...


 
DVM ©   (2011-07-15 22:51) [17]


> Rouse_ ©   (15.07.11 22:30) [16]


> Это-ж дерево а не список,

тем более, зачем грузить то, чего не видно


 
Jeer ©   (2011-07-15 22:57) [18]


> DVM ©   (15.07.11 22:51) [17]
>
>
> > Rouse_ ©   (15.07.11 22:30) [16]
>
>
> > Это-ж дерево а не список,
>
> тем более, зачем грузить то, чего не видно
>


А вот прикинь - пользователь чекнул верхний айтем для составления запроса со всеми вложенными чайлдами и ?
Потом решил, что ошибся и перечекнул ниже или выше.
Если дерево не подгружено в память, пипец наступает очень быстро.


 
DVM ©   (2011-07-15 22:59) [19]


> Jeer ©   (15.07.11 22:57) [18]


> Потом решил, что ошибся и перечекнул ниже или выше.

асинхронные запросы или вообще не давать ему чекать по сто раз где попало, после первого чека вылезает окно с прорессом и пусть ждет.


 
Jeer ©   (2011-07-15 23:02) [20]

нереально.
После такого решения мне была бы секир башка


 
картман ©   (2011-07-15 23:03) [21]


> А вот прикинь - пользователь чекнул верхний айтем для составления
> запроса со всеми вложенными чайлдами и ?

и загрузил пять штук


> Потом решил, что ошибся и перечекнул ниже или выше.

и еще пять


> Если дерево не подгружено в память, пипец наступает очень
> быстро.

при скорости нажатий 2М/сек


 
DVM ©   (2011-07-15 23:05) [22]


> Jeer ©   (15.07.11 23:02) [20]


> нереально.

Что не реально? Асинхронный запрос сделать нереально с отменой закачки данных  (а еще лучше с фоновой подгрузкой) при клике по другому узлу? Всем можно сделать. Нагрузка на сервер ляжет правда.


 
Jeer ©   (2011-07-15 23:05) [23]

Понятно, что задачи у всех разные.

Для OLAP - надо предоставлять пользователю быстро визуально формировать многомерный запрос с различными вариантами отметки сущностей в древовидной и естественной для человека иерархии предметной области.


 
Jeer ©   (2011-07-15 23:09) [24]

В том и дело - все на клиенте, т.к. задача обеспечить единообразие работы с различными СУБД.
Сил и средств на реализацию и поддержку серверных решений такой задачи ( MS SQL, FireBird, Oracle, ...etc) никто не дает.


 
Jeer ©   (2011-07-15 23:16) [25]


> картман ©   (15.07.11 23:03) [21]
>
>
> > А вот прикинь - пользователь чекнул верхний айтем для
> составления
> > запроса со всеми вложенными чайлдами и ?
>
> и загрузил пять штук


Какие пять штук ?
Там может быть прорва штук, если грузить по "пять" - жизни не хватит.
Наконец о может чекнуть один из верхних уровеней и сделать запрос.
Ждать пока выстроится дерево ?
Потом выполнится запрос, потом разборка "шахматки" ?
Уволят :)


 
Kerk ©   (2011-07-15 23:54) [26]

А разделить данные и их представление в голову не приходило? Если у тебя в памяти дерево из миллиона классов, это совсем не значит, что тебе нужно TreeView насиловать.


 
Rouse_ ©   (2011-07-16 00:07) [27]

Ребят, а чего вы накинулись то?
ТЗ выданное Jeer-у, никто-ж из вас не читал, а посмотреть - так все герои :) (шутка)
А в ТЗ нюансы и обговорены... сущности они из нюансов и строяться...


 
Jeer ©   (2011-07-16 00:33) [28]


> нужно TreeView насиловать.


Этим занимаются полторы тыщи пользователей, как минимум.
Ежедневно, регулярно и бездумно - им бы нажимать, понимаешь.
Поэтому и было выполнено такое построение системы - распределенное.
Серверу - все чисто реляционное, а построение двумерных срезов гиперкуба - на клиентский машинах.
В итоге система одновременно работает с разными СУБД ( на сегодня MSSQL, Oracle и Firebird )
На серверах нет ничего, кроме чистых таблиц, даже View нет, не говоря уже о..


 
Kerk ©   (2011-07-16 00:35) [29]


> Rouse_ ©   (16.07.11 00:07) [27]
>
> Ребят, а чего вы накинулись то?

Дык треплемся, для того и форум.
Так-то понятно, что перед работодателем отвечать Jeer"у, а не коллективному разуму потрепаловки :)


 
Jeer ©   (2011-07-16 00:54) [30]


> Так-то понятно, что перед работодателем отвечать Jeer"у,
>  а не коллективному разуму потрепаловки :)


Та не.. все нормально.
Система по такой схеме работает свыше 5 лет - полет нормальный.
Ее более дебильный аналог - ГАС "Управление" от пермской фирмы "Прогноз".
prognoz.ru
Не, ну сам-то "Прогноз" вроде востребован, хотя по мне - так вполне достаточно мат.пакетов: "Статистика", SPSS и иже с ними.


 
Eraser ©   (2011-07-16 01:11) [31]

> [30] Jeer ©   (16.07.11 00:54)

одного беглово взгляда на сайт достаточно, чтобы голове возникло слово "откат" ;-) это безотносительтно к самой программе, еще качеству или конкретной организации ;-)


 
Германн ©   (2011-07-16 02:07) [32]


> одного беглово взгляда на сайт достаточно

Даже не глядел. Мне достаточно слов Сергея и Александра. Ни разу их не ловил на использовании телесных наказаний для бедного существа по имени "чушь". :)


 
_Юрий   (2011-07-17 12:19) [33]

Если даже не глядеть, шансы поймать стремятся к нулю.
В принципе, это удобно.



Страницы: 1 вся ветка

Текущий архив: 2011.11.13;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.011 c
2-1311149076
Scott Storch
2011-07-20 12:04
2011.11.13
ошибка при работе с параметрами запроса


1-1272628592
Яцхен
2010-04-30 15:56
2011.11.13
Как вывести форму на панельке или табшите другой формы?


1-1272500252
SPeller
2010-04-29 04:17
2011.11.13
Можно ли проверить указатель на корректность?


2-1311321505
ixen
2011-07-22 11:58
2011.11.13
Как узнать тип поля?


15-1310569650
R_R
2011-07-13 19:07
2011.11.13
PHP, Как составить список подключенных сокетов?