Переключение на Главную Страницу Страницы: 1 2 [3]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Сравнение скорости ИТЗ и класса группировки ТГ (число прочтений - 13565 )
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Сравнение скорости ИТЗ и класса группировки ТГ
Ответ #30 - 26. Декабря 2006 :: 08:45
Печать  
Дима, а у тебя после подобной правки обхода ТГ порядок замера времени для ТГ изменился? или те же цифры?

Естественно, без вывода в таблицу.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Сравнение скорости ИТЗ и класса группировки ТГ
Ответ #31 - 26. Декабря 2006 :: 08:52
Печать  
artbear писал(а) 26. Декабря 2006 :: 06:19:
И если говорить только о сравнении ИТЗ и ТГ, нас интересует вариант с простым индексом, а не по внутреннему индексу.

1. Я не понял.
Вам интересует в каком плане? Чисто в научно-познавательном, что ли?
У тебя есть возможность сделать группировку за секунду.
Цитата:
Внутренний индекс, родитель есть, с финальной сортировкой
ИТ::Группировать(): 00.00.01.032
Обход: 00.00.01.755

С какой стати оптимальный вариант - это вариант с простым индексом?
Цитата:
Простой индекс, родитель есть, без финальной сортировки
ИТ::Группировать(): 00.00.07.782
Обход: 00.00.00.386

Оптимальный вариант - это вариант, который дает нужный результат с наименьшими затратами.

2. Я совершенно сознательно оставил вывод в таблицу.
Это сделано:
  • чтобы было понятно, что без финальной сортировки группировка всегда несортированная
    Потому что в алгоритме группировки применяются индексы по внутренним представлениям.
    т.е. сортировать на выходе _всегда_ необходимо
  • для того, чтобы показать работу алгоритма кеширования в 1С
    Артур, тебе зачем обход-то нужен? Просто так, абстрактно? Или все-таки ты работать с данными будешь?
    Тогда какой тест ближе к реальности?

    Кроме того, вывод в таблицу сделан максимально быстрым (это для скорости эти заморочки с кешированием секции и областей).
  • « Последняя редакция: 26. Декабря 2006 :: 09:56 - kms »  

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



    Сообщений: 3050
    Местоположение: Киров
    Зарегистрирован: 23. Мая 2006
    Пол: Мужской
    Re: Сравнение скорости ИТЗ и класса группировки ТГ
    Ответ #32 - 26. Декабря 2006 :: 09:57
    Печать  
    artbear писал(а) 26. Декабря 2006 :: 08:45:
    Дима, а у тебя после подобной правки обхода ТГ порядок замера времени для ТГ изменился? или те же цифры?

    Естественно, без вывода в таблицу.

    нет не изменился (и не должен был)
      

    1&&2&&3
    Наверх
     
    IP записан
     
    artbear
    1c++ developer
    1c++ moderator
    Отсутствует


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

    Сообщений: 6303
    Местоположение: Москва
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: Сравнение скорости ИТЗ и класса группировки ТГ
    Ответ #33 - 26. Декабря 2006 :: 11:36
    Печать  
    kms писал(а) 26. Декабря 2006 :: 08:52:
    2. Я совершенно сознательно оставил вывод в таблицу.
    Это сделано:
  • чтобы было понятно, что без финальной сортировки группировка всегда несортированная
    Потому что в алгоритме группировки применяются индексы по внутренним представлениям.
    т.е. сортировать на выходе _всегда_ необходимо

  • Вот это очень полезная инфа, не отмеченная в доке.

    Я вроде с первых минут/часов появления ИТЗ Улыбка следил за ИТЗ, но такого не знал Печаль
    В этом случае, естественно, нужно использовать варианты с финальной сортировкой.

    kms писал(а) 26. Декабря 2006 :: 08:52:
  • для того, чтобы показать работу алгоритма кеширования в 1С
    Артур, тебе зачем обход-то нужен? Просто так, абстрактно? Или все-таки ты работать с данными будешь?
    Тогда какой тест ближе к реальности?

    Кроме того, вывод в таблицу сделан максимально быстрым (это для скорости эти заморочки с кешированием секции и областей).

  • Мы сравниваем возможности ИТЗ и ТГ, а не работу 1С и ее механизмов.
    Твой вывод в таблицу сродни использованию тормозного Сообщить, и они оба "загрязняют" нам эксперимент.

    Я хочу знать, насколько ИТЗ работает быстрее, чем ТГ, с возможно меньшим влиянием доп. 1С-механизмов, кроме ТаблицыЗначений (внутри ТГ).
      

    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: Сравнение скорости ИТЗ и класса группировки ТГ
    Ответ #34 - 26. Декабря 2006 :: 11:41
    Печать  
    Михаил, можно вообще взять очень большое число элементов (например, 100 000 ).
    При этом вывод в таблицу будет занимать 99% всего времени, и мы согласно твоей методике должны будем заявить, что в этом случае обход ТГ и ИТЗ занимает одинаковое время??

    ИМХО это и называется нарушение чистоты научного эксперимента Улыбка
      

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


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

    Сообщений: 4632
    Зарегистрирован: 19. Мая 2006
    Re: Сравнение скорости ИТЗ и класса группировки ТГ
    Ответ #35 - 26. Декабря 2006 :: 11:45
    Печать  
    artbear писал(а) 26. Декабря 2006 :: 11:41:
    Михаил, можно вообще взять очень большое число элементов (например, 100 000 ).
    При этом вывод в таблицу будет занимать 99% всего времени, и мы согласно твоей методике должны будем заявить, что в этом случае обход ТГ и ИТЗ занимает одинаковое время??

    ИМХО это и называется нарушение чистоты научного эксперимента Улыбка

    Артур, ты добросовестно заблуждаешься Улыбка

    Это называется разная постановка задачи.

    1. Задача может быть абстрактной - просто обход группировки
    2. Задача может быть прикладной - реальный вывод отчета

    Меня интересует возможность эффективного построения отчета.
    Любыми доступными средствами.

    А вот зачем тебе абстрактные данные? Где ты собираешься их применять?
      

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


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

    Сообщений: 6303
    Местоположение: Москва
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: Сравнение скорости ИТЗ и класса группировки ТГ
    Ответ #36 - 26. Декабря 2006 :: 11:57
    Печать  
    kms писал(а) 26. Декабря 2006 :: 11:45:
    Артур, ты добросовестно заблуждаешься Улыбка

    Это называется разная постановка задачи.

    Меня интересует возможность эффективного построения отчета.
    Любыми доступными средствами.

    А вот зачем тебе абстрактные данные? Где ты собираешься их применять?

    Я как раз не заблуждаюсь, а именно ты перепутал, какую задачу решаю я Улыбка
    Я для себя поставил задачу по сравнению только механизмов ИТЗ и ТГ и с помощью Димы ее решил.

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

    Мне эти данные нужны, чтобы видеть точную разницу в друх подходах, и все, ничего сверх этого.

    Извини, если сразу это не сказал Улыбка
    Хотя первый пост ИМХО точно об этом говорит  Смех
      

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


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

    Сообщений: 4632
    Зарегистрирован: 19. Мая 2006
    Re: Сравнение скорости ИТЗ и класса группировки ТГ
    Ответ #37 - 26. Декабря 2006 :: 12:05
    Печать  
    Смеялсо Улыбка

    artbear, trad
    Да, кстати, я тоже добросовестно заблуждался, знаете где?
    Вот здесь (это расшифровка индексов таблицы после метода "группировать")
    Цитата:
    Простой индекс, родителя нет, без финальной сортировки
    Индекс №1: имя: '', выражение: ''
    Индекс №2: имя: 'Номенклатура', выражение: '&Номенклатура'

    Т.е. для простых индексов возможен обход группировок без доп. индексирования (по индексу, построенному при группировке).

    Но здесь два минуса
    1. Это все равно медленнее
    2. Это внутренние индексы - где гарантия, что завтра они не исчезнут, если алгоритм группировки будет изменен (одни "грабли" Артур уже нашел)
    3. Мне представляется более правильным традиционный обход по индексу "-__ЭтоГруппа__, Номенклатура", такого индекса нет - все равно нужно индексировать
    4. Да и индексируется-то только самый верхний уровень. Так что все равно - это не выход.

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

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


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

    Сообщений: 6303
    Местоположение: Москва
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: Сравнение скорости ИТЗ и класса группировки ТГ
    Ответ #38 - 26. Декабря 2006 :: 12:08
    Печать  
    Михаил, вот этот баг, плиз, посмотри.

    artbear писал(а) 26. Декабря 2006 :: 06:12:
    И нарисовался один баг ИТЗ:
    группируем
         ИТЗ.Группировать("Склад: Склад; Товар: &Товар; Док: Док", "Ресурс1,Ресурс2,Ресурс3,Ресурс4");
    1) для вложенной группировки по Товарам, если текущая позиция - это группа, нет индексов. Но наверное, это фича Улыбка
    2) для них же выборка по обычному/нулевому индексу идет в обратном порядке Печаль
    Т.е. сортировка без индексов почему-то идет в обратном порядке.
    Это точно баг.
    Поэтому в выложенной обработке пришлось для подобных таблиц создавать доп. индекс, т.е. тратить дополнительное, хотя и небольшое время.

    ЗЫ У меня в коде в этом месте стоит TODO c комментом
      

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


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

    Сообщений: 4632
    Зарегистрирован: 19. Мая 2006
    Re: Сравнение скорости ИТЗ и класса группировки ТГ
    Ответ #39 - 26. Декабря 2006 :: 12:19
    Печать  
    artbear писал(а) 26. Декабря 2006 :: 12:08:
    Михаил, вот этот баг, плиз, посмотри.

    Подтверждаю такое поведение - я в свой пост выше добавил комментарий №4.
    Индексируется только самый верхний уровень.

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

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

    Но.
    Если Леша сочтет это багом - ну, это ему виднее, как автору.
    А я - за мир - и предлагаю не заморачиваться. Улыбка

    Внутренние индексы рулят.  Улыбка
      

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


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

    Сообщений: 6303
    Местоположение: Москва
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: Сравнение скорости ИТЗ и класса группировки ТГ
    Ответ #40 - 26. Декабря 2006 :: 12:31
    Печать  
    Мне не нравится сам факт того, что есть разночтение в реализации -
    для элементов/не групп (нижная иерархия) есть индекс с именем/выражением, которые заданы в вызове Группировать();
    для групп же нет подобного индекса.

    Нужно принять решение и отметить его в доке
    1) либо это баг, значит, нужно исправлять Улыбка
    2) либо это фича, значит, просто нужно четко отметить в доке, и пользоваться доп.индексацией, причем возможна независимая индексация, отличная от индексации для элементов.

    Лично мне нравится п.2
      

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


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

    Сообщений: 4632
    Зарегистрирован: 19. Мая 2006
    Re: Сравнение скорости ИТЗ и класса группировки ТГ
    Ответ #41 - 26. Декабря 2006 :: 12:34
    Печать  
    artbear писал(а) 26. Декабря 2006 :: 12:31:
    1) либо это баг, значит, нужно исправлять Улыбка
    2) либо это фича, значит, просто нужно четко отметить в доке, и пользоваться доп.индексацией, причем возможна независимая индексация, отличная от индексации для элементов.
    3) либо это похрен

    Мне нравится п. 3 Улыбка

    И значит
    Цитата:
    Нужно принять решение и отметить его в доке

    принимай.

    Только либо делай, либо не делай изменения в обоих ветках - 2.0.3 и 2.5
    Я не хочу сейчас разводить функционал и доку на ТП и на ИТ.
      

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


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

    Сообщений: 6303
    Местоположение: Москва
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: Сравнение скорости ИТЗ и класса группировки ТГ
    Ответ #42 - 26. Декабря 2006 :: 13:08
    Печать  
    Я еще жду мнения Алексея как автора Улыбка
    Когда/если он даст отмашку на п.2, я сделаю изменения в доке в обеих ветках.
      

    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: Сравнение скорости ИТЗ и класса группировки ТГ
    Ответ #43 - 26. Декабря 2006 :: 14:28
    Печать  
    Мне лично тоже без разницы, как оно там сделано.  Но переделывать - не в моих силах... тем более что я этим и не пользуюсь  Улыбка

    Думаю, что если задокументировать это как фичу, всё будет нормально.
      
    Наверх
     
    IP записан
     
    artbear
    1c++ developer
    1c++ moderator
    Отсутствует


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

    Сообщений: 6303
    Местоположение: Москва
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: Сравнение скорости ИТЗ и класса группировки ТГ
    Ответ #44 - 26. Декабря 2006 :: 14:29
    Печать  
    Договорились, внесу исправления согласно п.2
      

    OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
    Наверх
    GTalkSkype/VoIPICQ  
    IP записан
     
    Переключение на Главную Страницу Страницы: 1 2 [3] 
    ОтправитьПечать