Вверх ↑
Этот топик читают: Гость
Ответов: 542
Рейтинг: 12
#1: 2009-06-04 15:17:08 ЛС | профиль | цитата
Друзья пару месяцев назад в качестве эксперимента, собирал схему для показа двухуровневого дерева с использованием элементов TreeViewTrain+IconsManager +TVT_AddNode для показа древовидной структуры. На днях решил реанимировать программу но на этот раз попробовал загрузить из текстового файла дерево элементов размеров в 12 тыс. строк.
Схема начала зависать, при количестве элементов до 1000 древо рисуется нормально.
Понимаю что при таком скудном описании вы вряд ли сможете мне помочь советом. Попробую вырезать рабочий кусок схемы для демонстрации.
а пока может кто дать какие либо совету по поводу общих принципов построение древовидной структуры когда количество элементов порядка 10 тыс. элементов.
------------ Дoбавленo в 15.18:
Извините не дождался и нажал два раза отправить
------------ Дoбавленo в 15.42:
Вот пример схемы первая загружает 1200 элементов вторая около сотни. В общем до 1000 работает а дальше все завысает
карма: 0

0
файлы: 2drevo1200.sha [113.1KB] [110], drevo100.rar [23KB] [78]
Ответов: 2125
Рейтинг: 159
#2: 2009-06-04 15:44:42 ЛС | профиль | цитата
Общий принцип такой: не загружать всё сразу, а по мере открытия дерева.
Например, можно сначала загрузить два уровня, а при открытии соответствующего узла догружать третий уровень только для него, и т.п.
карма: 1

1
Голосовали:afandi
Ответов: 542
Рейтинг: 12
#3: 2009-06-04 15:59:47 ЛС | профиль | цитата
Очень дельный совет, спасибо!
у меня была мысль сделать два окна один для первого уровня дерева а второй для последующих уровней. для первого уровня на котором расположен фокус во втором открывать вложенный список.

Интересно какой вариант проще в реализации?
------------ Дoбавленo в 16.13:
А какие есть способы замера времени работы того или иного куска схемы?
хочу выполнит замер каждого логического блока и работать над его оптимизацией
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#4: 2009-06-04 16:56:09 ЛС | профиль | цитата
afandi писал(а):
А какие есть способы замера времени работы того или иного куска схемы?

afandi, до микросекунд.

Add(TimeCounter,580538,245,280)
{
}
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:afandi
Ответов: 542
Рейтинг: 12
#5: 2009-06-04 17:21:09 ЛС | профиль | цитата
Микросекунд это значит нужно делить на 1000 что бы получить в секундах?
------------ Дoбавленo в 17.32:
В случае преобразования 12 тыс. строк в многомерный поток затрачивается 18 секунд у меня.
строки разделены 1013 а преобразовываются в поток используя MT_String Delimeter="1013"
возможен ли другой подход к этой задаче

карма: 0

0
Разработчик
Ответов: 26324
Рейтинг: 2147
#6: 2009-06-04 17:39:58 ЛС | профиль | цитата
afandi писал(а):
Микросекунд это значит нужно делить на 1000

Нет, на 1 000 000, на 1000 это -- миллисекунды
карма: 22

0
Ответов: 542
Рейтинг: 12
#7: 2009-06-04 18:14:12 ЛС | профиль | цитата
А разве компонент StrPart не умеет разделять строки по разделителю 1013 ?

карма: 0

0
Ответов: 1161
Рейтинг: 160
#8: 2009-06-04 18:17:35 ЛС | профиль | цитата
только по одному из них
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#9: 2009-06-04 22:05:43 ЛС | профиль | цитата
при таком количестве наименований единственное спасение делать так
tsdima писал(а):
не загружать всё сразу, а по мере открытия дерева.


карма: 26
0
9
Сообщение
...
Прикрепленные файлы
(файлы не залиты)