Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) ИТ ЗаполнитьКолонку (число прочтений - 3953 )
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
ИТ ЗаполнитьКолонку
07. Мая 2008 :: 21:13
Печать  
Переделываю класс на ИТ, понадобилось вместо
     //ИНТЗ.УдалитьКолонку("ДляВывода");
     //ИНТЗ.НоваяКолонка("ДляВывода");
сделать
     ИНТЗ.ЗаполнитьКолонку("","ДляВывода",0);
И ужаснулся скорости заполнения КоличествоСтрок~200000, заняло 1195сек.
Потом вспомнил что у меня эта колонка присутствует в индексе, удаляем индекс,
время 0,076сек.

Может, стоит как-то уведомлять программиста или инвалидировать индекс при использовании этого метода?
« Последняя редакция: 08. Мая 2008 :: 11:02 - PVR »  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ИТ ЗаполнитьКолонку
Ответ #1 - 08. Мая 2008 :: 04:37
Печать  
А может программист всё таки должен знать, где у него индексы и какие?  Тебя же SQL, например, не уведомляет, когда ты ему говоришь
UPDATE SomeTable Set SomeField = 0
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ИТ ЗаполнитьКолонку
Ответ #2 - 08. Мая 2008 :: 05:37
Печать  
ADirks писал(а) 08. Мая 2008 :: 04:37:
А может программист всё таки должен знать, где у него индексы и какие?  Тебя же SQL, например, не уведомляет, когда ты ему говоришь
UPDATE SomeTable Set SomeField = 0

Да мне уже как-то все равно  Подмигивание
А вот новичкам полезно знать!
Или не знать и не пользоваться этим методом, посмотреть как он тормозит Ужас, и забить на ИТ  Печаль

Думал такое поведение ИТ неверное, были разговоры на эту тему, что сначала надо инвалидировать индекс заполнить колонку а затем переиндексировать инвалидированые индексы, ИТ может проделать это сама!  Класс
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИТ ЗаполнитьКолонку
Ответ #3 - 08. Мая 2008 :: 06:45
Печать  
PVR писал(а) 08. Мая 2008 :: 05:37:
Думал такое поведение ИТ неверное, были разговоры на эту тему, что сначала надо инвалидировать индекс заполнить колонку а затем переиндексировать инвалидированые индексы, ИТ может проделать это сама!  Класс

А теперь подумай о том, что в индексе могут участвовать и другие поля.
Автопереиндексация ИТ при определенных условиях ИМХО почти тупиковый путь, потому что только пользователь ИТ может точно знать алгоритм и соответственно может управлять производительностью для сложных операций, связанных с индексами.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИТ ЗаполнитьКолонку
Ответ #4 - 08. Мая 2008 :: 07:15
Печать  
ОФФ
В методе CVTExtended:ЯзыкartiallyReindex(vector<bool>& bChangedRows, int nChangedColumn)
выдается ошибка на счетчик цикла
error: "i" is undefined
Или у меня настройки проекта другие?
  

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



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ИТ ЗаполнитьКолонку
Ответ #5 - 08. Мая 2008 :: 07:37
Печать  
artbear писал(а) 08. Мая 2008 :: 06:45:
PVR писал(а) 08. Мая 2008 :: 05:37:
Думал такое поведение ИТ неверное, были разговоры на эту тему, что сначала надо инвалидировать индекс заполнить колонку а затем переиндексировать инвалидированые индексы, ИТ может проделать это сама!  Класс

А теперь подумай о том, что в индексе могут участвовать и другие поля.
Автопереиндексация ИТ при определенных условиях ИМХО почти тупиковый путь, потому что только пользователь ИТ может точно знать алгоритм и соответственно может управлять производительностью для сложных операций, связанных с индексами.

Не согласен, перед заполнением всегда есть возможность проверки, в какие индексы попадает заполняемая колонка.  Вариант с переиндексацией индексов, куда входит заполняемая колонка или с предупреждением как с УдалитьКолонку, по моему мнению верное решение!

Изменено:
Ладно согласен, переиндексацией должен управлять программист, но с предупреждением как с УдалитьКолонку, по моему мнению верное решение!
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ИТ ЗаполнитьКолонку
Ответ #6 - 08. Мая 2008 :: 09:42
Печать  
[quote author=artbear link=1210194833/0#4 date=1210230938]ОФФ
В методе CVTExtended::PartiallyReindex(vector<bool>& bChangedRows, int nChangedColumn)
выдается ошибка на счетчик цикла
error: "i" is undefined
Или у меня настройки проекта другие?[/quote]
В icpp/3.0 область видимости переменной цикла соответствует стандарту (/Zc:forScope).
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ИТ ЗаполнитьКолонку
Ответ #7 - 08. Мая 2008 :: 09:45
Печать  
ADirks

Кстати, Леш, vector<bool> - не лучшая штука.
Лучше vector<BYTE> сделать.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИТ ЗаполнитьКолонку
Ответ #8 - 08. Мая 2008 :: 09:55
Печать  
[quote author=kms link=1210194833/0#6 date=1210239736][quote author=artbear link=1210194833/0#4 date=1210230938]ОФФ
В методе CVTExtended::PartiallyReindex(vector<bool>& bChangedRows, int nChangedColumn)
выдается ошибка на счетчик цикла
error: "i" is undefined
Или у меня настройки проекта другие?[/quote]
В icpp/3.0 область видимости переменной цикла соответствует стандарту (/Zc:forScope).
[/quote]
Вот я и говорю, что тот, кто заливал, допустил ошибку, похоже.
  

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


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ИТ ЗаполнитьКолонку
Ответ #9 - 08. Мая 2008 :: 10:17
Печать  
artbear писал(а) 08. Мая 2008 :: 07:15:
ОФФ
В методе CVTExtended:ЯзыкartiallyReindex(vector<bool>& bChangedRows, int nChangedColumn)
выдается ошибка на счетчик цикла
error: "i" is undefined
Или у меня настройки проекта другие?

Ну...  фишка в том, что я так и не научился собирать icpp  Печаль   а потому засунул код как получилось, чисто показать.
За праздники постараюсь научится.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ИТ ЗаполнитьКолонку
Ответ #10 - 08. Мая 2008 :: 10:22
Печать  
ADirks писал(а) 08. Мая 2008 :: 10:17:
Ну...  фишка в том, что я так и не научился собирать icpp  Печаль   а потому засунул код как получилось, чисто показать.
За праздники постараюсь научится.

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

De quelle planète es-tu?
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: ИТ ЗаполнитьКолонку
Ответ #11 - 08. Мая 2008 :: 10:56
Печать  
kms писал(а) 08. Мая 2008 :: 09:45:
Кстати, Леш, vector<bool> - не лучшая штука.
Лучше vector<BYTE> сделать.

А чем тебе vector<bool> не угодил? Не, конечно, если не знать, что там из него сотворили, то можно на пару граблей наступить... Но если знать, то какие проблемы? Вполне себе такой самоотрастающий битовый массив...
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ИТ ЗаполнитьКолонку
Ответ #12 - 08. Мая 2008 :: 11:01
Печать  
Uzhast писал(а) 08. Мая 2008 :: 10:56:
А чем тебе vector<bool> не угодил? Не, конечно, если не знать, что там из него сотворили, то можно на пару граблей наступить... Но если знать, то какие проблемы? Вполне себе такой самоотрастающий битовый массив...

Просто ни к чему оно там.
Я понимаю, к чему ты клонишь - не, таймингов я не засекал.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: ИТ ЗаполнитьКолонку
Ответ #13 - 08. Мая 2008 :: 12:41
Печать  
kms писал(а) 08. Мая 2008 :: 11:01:
Uzhast писал(а) 08. Мая 2008 :: 10:56:
А чем тебе vector<bool> не угодил? Не, конечно, если не знать, что там из него сотворили, то можно на пару граблей наступить... Но если знать, то какие проблемы? Вполне себе такой самоотрастающий битовый массив...

Просто ни к чему оно там.
Я понимаю, к чему ты клонишь - не, таймингов я не засекал.

Неправильно понимаешь. Ни к чему я не клоню Улыбка Просто думал, vector<bool> тебе граблёй по любимой мозоли стукнул Улыбка
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ИТ ЗаполнитьКолонку
Ответ #14 - 08. Мая 2008 :: 13:21
Печать  
Uzhast писал(а) 08. Мая 2008 :: 12:41:
Неправильно понимаешь. Ни к чему я не клоню Улыбка Просто думал, vector<bool> тебе граблёй по любимой мозоли стукнул Улыбка

Типа операции взятия адреса, к примеру? Улыбка
Нет, не доводилось.

Преступника Фунтика я не встречал. Очень довольный
  

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