Переключение на Главную Страницу Страницы: 1 2 [3]  ОтправитьПечать
Очень популярная тема (более 25 ответов) ИТЗ Сортировать и т.д.? (число прочтений - 10280 )
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ИТЗ Сортировать и т.д.?
Ответ #30 - 31. Марта 2008 :: 10:20
Печать  
Набросал такой забавный замерчик:
Код
Выбрать все
	_лим =100000;

	_нач = _GetPerformanceCounter();
	_т =СоздатьОбъект("ИндексированнаяТаблица");
	_т.НоваяКолонка("к1");
	Для _ин =1 По _лим Цикл
		_т.НоваяСтрока();
	КонецЦикла;
	Сообщить("создание ит: " +(_GetPerformanceCounter() -_нач));

	_нач = _GetPerformanceCounter();
	Для _ин =1 По _лим Цикл
	КонецЦикла;
	Сообщить("пустой цикл: " +(_GetPerformanceCounter() -_нач));

	_нач = _GetPerformanceCounter();
	Для _ин =1 По _лим Цикл
		_т.Установить(_ин, 1, 0);
	КонецЦикла;
	Сообщить("цикл с установкой: " +(_GetPerformanceCounter() -_нач));

	_нач = _GetPerformanceCounter();
	_т.ВыбратьСтроки();
	Пока _т.ПолучитьСтроку() =1 Цикл
		_т.Установить(, 1, 0);
	КонецЦикла;
	Сообщить("цикл с установкой 2: " +(_GetPerformanceCounter() -_нач));

	_нач = _GetPerformanceCounter();
	_т.ЗаполнитьКолонку(, 1, 0);
	Сообщить("установка: " +(_GetPerformanceCounter() -_нач));
 



Результат
Код
Выбрать все
создание ит: 167
пустой цикл: 60
цикл с установкой: 163
цикл с установкой 2: 226
установка: 6
 

  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ИТЗ Сортировать и т.д.?
Ответ #31 - 31. Марта 2008 :: 10:27
Печать  
Т.е. с точки зрения скорости - да, имеет смысл.

Беда только с семантикой объекта.
Перегружать ЗаполнитьКолонку - плохая идея.

Завтра понадобится геометр. прогрессия или числа фибоначчи - и что будем делать?

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

Тем более, что у тебя есть возможность спокойно решить вопрос, пусть и ценой доп. затрат времени.

P.S.
Ну и может быть, Леша Диркс какие-нибудь мысли выскажет в разрезе идеологии.
  

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



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ИТЗ Сортировать и т.д.?
Ответ #32 - 31. Марта 2008 :: 10:29
Печать  
Интересно, а кто то смотрел выложенный класс с примером?

Неужели никому не понравилось?

Ведь мой алгоритм построения дерева дает много преимуществ по сравнению с вложенными таблицами! + метод группировать переделать под этот алгоритм то вообще конфетка получится  Подмигивание
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ИТЗ Сортировать и т.д.?
Ответ #33 - 31. Марта 2008 :: 10:36
Печать  
kms писал(а) 31. Марта 2008 :: 10:20:
Результат
Код
Выбрать все
создание ит: 167
пустой цикл: 60
цикл с установкой: 163
цикл с установкой 2: 226
установка: 6
 


Ну так об этом и речь  Очень довольный

уже есть 3 варианта, думаю 4-ый очень даже вписывается  Подмигивание
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ИТЗ Сортировать и т.д.?
Ответ #34 - 31. Марта 2008 :: 13:18
Печать  
А время в 1/4 секунды при разворачивании дерева отчета это уже хорошо  Улыбка
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИТЗ Сортировать и т.д.?
Ответ #35 - 02. Апреля 2008 :: 13:19
Печать  
Да, тут торопиться не нужно, это точно.
  

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


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ИТЗ Сортировать и т.д.?
Ответ #36 - 03. Апреля 2008 :: 06:33
Печать  
1. Делать сортировку с переупорядочиванием строк - однозначно нет. Это не просто плохо, это просто жутко.
2. Заполнение колонки с инкрементом штука неплохая конечно, но это ведь частный случай. Впрочем, заполнение без инкремента - тоже частный случай  Улыбка   Фиг знает, как тут получше извернуться.  Самое правильное передавать в ЗаполнитьКолонку() что-то вроде ссылки на алгоритм вычисления следующего значения. Но где эту ссылку брать? Ведь не на 1С же алгоритмы писать...
И ещё такая проблема есть: если индекс не уникален, то как инкремент делать? на каждую строку или всё таки на узел? В общем, не всё так просто как кажется на первый взгляд.
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ИТЗ Сортировать и т.д.?
Ответ #37 - 03. Апреля 2008 :: 07:08
Печать  
ADirks
1. согласен  (для моего случая важнее 2.) Улыбка
2. в моем случае как "вариант 3" только с инкрементом  (по всем строкам).
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ИТЗ Сортировать и т.д.?
Ответ #38 - 03. Апреля 2008 :: 07:19
Печать  
ADirks писал(а) 03. Апреля 2008 :: 06:33:
Фиг знает, как тут получше извернуться.  Самое правильное передавать в ЗаполнитьКолонку() что-то вроде ссылки на алгоритм вычисления следующего значения. Но где эту ссылку брать? Ведь не на 1С же алгоритмы писать...
И ещё такая проблема есть: если индекс не уникален, то как инкремент делать? на каждую строку или всё таки на узел? В общем, не всё так просто как кажется на первый взгляд.
А, может проще взять за основу «Вариант 3», добавить 4 параметр инкремент, при каждой записи в ИТЗ значения «Вариант 3», инкрементировать значение на инкремент.
Я, почему-то думал, что здесь все просто.

  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ИТЗ Сортировать и т.д.?
Ответ #39 - 03. Апреля 2008 :: 07:28
Печать  
А то, что ты задумал можно реализовать как «Вариант 5».
На счет «кал бэк» функции в таком случае может подумать о VB скрипте. (в свете последних событий оказалось, что он быстрее, чем 1С)  Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 
ОтправитьПечать