Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) И снова проблемы ИТЗ (число прочтений - 7674 )
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
И снова проблемы ИТЗ
04. Марта 2008 :: 11:25
Печать  
Смысл проблемы в следующем:
функция КоличествоСтрок, работает не корректно. Или я просто не умею её готовить?

Просьба проверить


Тест как всегда прилагаю
  

IndexTable5.ert ( 7 KB | Загрузки )
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: И снова проблемы ИТЗ
Ответ #1 - 04. Марта 2008 :: 12:36
Печать  
Да, прикольно получается  (точнее не получается) Печаль
Причем, если закомментировать строчку ИТЗ.ЗаполнитьКолонку(,"Число2",0); , или добавлять индексы после этой строчки, то всё работает пучком.  Нерешительный
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: И снова проблемы ИТЗ
Ответ #2 - 04. Марта 2008 :: 14:07
Печать  
Прошу баг занести в багзиллу.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: И снова проблемы ИТЗ
Ответ #3 - 04. Марта 2008 :: 14:22
Печать  
Зарегистрировал в багзилле

http://www.1cpp.ru/bugs/show_bug.cgi?id=3604
  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: И снова проблемы ИТЗ
Ответ #4 - 04. Марта 2008 :: 14:29
Печать  
Здесь чистая арифметика, нарушения дерева нет; критичность небольшая.

НО.
Способ использования для ИТ явно неудачный.
Ибо изменение значений в колонке, которая участвует в нескольких индексах, приводит к пересчету всех соответствующих индексов.

Озабоченные эффективностью перцы сперва заполняют данные, и только после этого строят индексы.
Поэтому проблема и оставалась незамеченной.

ADirks
Леша, я ничего не забыл?

P.S.
Надо бы уйти от OnChangeRow в сторону OnChangeValue при финальной реиндексации после заполнения колонки.
  

vtext_removerow.txt ( 1 KB | Загрузки )

De quelle planète es-tu?
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: И снова проблемы ИТЗ
Ответ #5 - 04. Марта 2008 :: 14:33
Печать  
Цитата:
Способ использования для ИТ явно неудачный.
Ибо изменение значений в колонке, которая участвует в нескольких индексах, приводит к пересчету всех соответствующих индексов.


В связи с этим вопрос: дерево при изменении индексированных столбцов перестраивается полностью или  достраивается?
  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: И снова проблемы ИТЗ
Ответ #6 - 04. Марта 2008 :: 14:37
Печать  
Nick писал(а) 04. Марта 2008 :: 14:33:
Цитата:
Способ использования для ИТ явно неудачный.
Ибо изменение значений в колонке, которая участвует в нескольких индексах, приводит к пересчету всех соответствующих индексов.


В связи с этим вопрос: дерево при изменении индексированных столбцов перестраивается полностью или  достраивается?


Я тоже думал, что эффективнее строить индекс, а только потом заполнять данные Озадачен
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: И снова проблемы ИТЗ
Ответ #7 - 04. Марта 2008 :: 14:39
Печать  
Nick писал(а) 04. Марта 2008 :: 14:33:
В связи с этим вопрос: дерево при изменении индексированных столбцов перестраивается полностью или  достраивается?

Как сказать.
Процесс отличен от простого построения индекса.
Но работа немалая, ибо каждую строку надо из дерева изъять и заново добавить.
В твоем примере - это пока выполняется для обоих индексов.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: И снова проблемы ИТЗ
Ответ #8 - 04. Марта 2008 :: 14:43
Печать  
kms писал(а) 04. Марта 2008 :: 14:39:
Nick писал(а) 04. Марта 2008 :: 14:33:
В связи с этим вопрос: дерево при изменении индексированных столбцов перестраивается полностью или  достраивается?

Как сказать.
Процесс отличен от простого построения индекса.
Но работа немалая, ибо каждую строку надо из дерева изъять и заново добавить.
В твоем примере - это пока выполняется для обоих индексов.


В реальности индексов ещё больше Печаль

А зачем перестраивать всё дерево? По другому ни как?
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: И снова проблемы ИТЗ
Ответ #9 - 04. Марта 2008 :: 14:45
Печать  
Цитата:
Я тоже думал, что эффективнее строить индекс, а только потом заполнять данные


Я так не думал
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: И снова проблемы ИТЗ
Ответ #10 - 04. Марта 2008 :: 14:46
Печать  
kiruha писал(а) 04. Марта 2008 :: 14:37:
Nick писал(а) 04. Марта 2008 :: 14:33:
Цитата:
Способ использования для ИТ явно неудачный.
Ибо изменение значений в колонке, которая участвует в нескольких индексах, приводит к пересчету всех соответствующих индексов.


В связи с этим вопрос: дерево при изменении индексированных столбцов перестраивается полностью или  достраивается?


Я тоже думал, что эффективнее строить индекс, а только потом заполнять данные Озадачен

Для ИТЗ почти 100% нужно наоборот Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: И снова проблемы ИТЗ
Ответ #11 - 04. Марта 2008 :: 14:47
Печать  
Nick писал(а) 04. Марта 2008 :: 14:45:
Цитата:
Я тоже думал, что эффективнее строить индекс, а только потом заполнять данные


Я так не думал


Прошу прощения. Я думал, что эффективнее создавать индексы, а только потом заполнять данные.
И не только для индексированной таблицы.

P.S.
Так как стоимость операции сортировки выше чем перестройки индекса.
Т.е. для того чтобы отсортировать сначала строят индекс, а потом сортируют, а не наоборот.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: И снова проблемы ИТЗ
Ответ #12 - 04. Марта 2008 :: 14:47
Печать  
Nick писал(а) 04. Марта 2008 :: 14:43:
А зачем перестраивать всё дерево? По другому ни как?

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

De quelle planète es-tu?
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: И снова проблемы ИТЗ
Ответ #13 - 04. Марта 2008 :: 14:53
Печать  
kms
т.е. вот это высказывание:

Цитата:
Как сказать.
Процесс отличен от простого построения индекса.
Но работа немалая, ибо каждую строку надо из дерева изъять и заново добавить.


Нужно читать так:

Цитата:
Как сказать.
Процесс отличен от простого построения индекса.
Но работа немалая, ибо каждую измененную строку надо из дерева изъять и заново добавить.

?
  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: И снова проблемы ИТЗ
Ответ #14 - 04. Марта 2008 :: 14:56
Печать  
kiruha писал(а) 04. Марта 2008 :: 14:47:
Прошу прощения. Я думал, что эффективнее создавать индексы, а только потом заполнять данные.
И не только для индексированной таблицы.

Неа, обычно нет.
Простое построение индекса - по одной вставке значения строки в дерево.
"ИТ.НоваяСтрока();  ИТ.Колонка = значение;" - две вставки и одно удаление.

У меня даже была когда-то идея для сильно нагруженных алгоритмов сделать спец. метод для добавления заполненной строки в ИТ (обошлось бы одной вставкой).
Но вряд ли это было бы широко востребовано Подмигивание
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать