Переключение на Главную Страницу Страницы: 1 2 [3] 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) Ускоренное создание объектов в 1С (число прочтений - 25002 )
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ускоренное создание объектов в 1С
Ответ #30 - 09. Июля 2008 :: 06:34
Печать  
artbear писал(а) 09. Июля 2008 :: 03:39:
ЗЫ По AutoGrowIfNeeded - фактически это исходный код ДмитрО, автора CIStringMap, поэтому я его использовал, типа автору виднее.

Где ж ты его нашел? Подмигивание
В свое время CIStringMap это не умел, а CMap так и не умеет.
Но это давно уже не актуально.

Цитата:
А ты смотрел CBLContext::InitObject(CType const&) ?
Там такой же код или что-то еще ?

В точности.

Цитата:
1. Все-таки моя схема немного, но выигрывает у схемы без InitObject()

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

В принципе, не вопрос пусть остается.
Но для ИТ и для большинства классов лучше убрать этот интерфейс из списка базовых.
И просто объявить пустые InitObject().

P.S.
Хорошо, что наконец-то разобрались с этим вопросом.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ускоренное создание объектов в 1С
Ответ #31 - 09. Июля 2008 :: 07:03
Печать  
artbear

Для ИТ убрал базу ICloneCreated и добавил объявление DECLARE_EMPTY_INITOBJECT().
Это без проблем можно сделать для большинства объектов 1cpp (но, наверное, не нужно - см. P.S.)

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

Я полагаю, что понадобится стратегия создания из рантайм-класса без вызова CBLContext::InitObject.

P.S.
А скорее всего - тормоза InitObject надо аккуратно убирать на уровне TurboBL.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #32 - 09. Июля 2008 :: 07:31
Печать  
kms писал(а) 09. Июля 2008 :: 06:34:
Но для ИТ и для большинства классов лучше убрать этот интерфейс из списка базовых.
И просто объявить пустые InitObject().

P.S.
Хорошо, что наконец-то разобрались с этим вопросом.

Согласен.
ИМХО подобное нужно сделать и для базового класса CMyContextBase
  

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: Ускоренное создание объектов в 1С
Ответ #33 - 09. Июля 2008 :: 07:40
Печать  
artbear писал(а) 09. Июля 2008 :: 07:31:
ИМХО подобное нужно сделать и для базового класса CMyContextBase

Ага.
Макрос, пожалуй и не нужен будет.

Залил на пробу вариант с TurboBL - в надежде, что подействует на какие-либо встроенные объекты 1С.
Но обоснований пока маловато.

Потестируешь?
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #34 - 09. Июля 2008 :: 09:32
Печать  
kms писал(а) 09. Июля 2008 :: 07:40:
Залил на пробу вариант с TurboBL - в надежде, что подействует на какие-либо встроенные объекты 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: Ускоренное создание объектов в 1С
Ответ #35 - 09. Июля 2008 :: 09:42
Печать  
Вроде для Групповых контекстов все ОК.
Посмотрел код CDocContext::InitObject - там делаются преобразования полученной строки, видимо, получение вида, установка CDocSet по виду и т.д., а уж потом пресловутое HashMethods Печаль
Думаю, что для справочников будет тоже самое.
Но в принципе их код довольно прост, его можно перехватить и вставить аналог этого кода без HashMethods в ТурбоБЛ.
Вот тогда будет нормальное ускорение.

А может быть, нам вообще перехватить сам HashMethods и ничего не делать в его обработчике, а ?
  

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: Ускоренное создание объектов в 1С
Ответ #36 - 09. Июля 2008 :: 10:02
Печать  
Это не для групповых, а для чистых CBLContext зашунтировано сейчас.
--
Да, нужно избавляться от HashMethods/HashProps.
Но с ним еще связаны FindMethod/FindProp.
Если их не изменить, будет опять тормозить поиск номера метода для ряда контекстов.

А еще контексты могут быть динамическими (как контекст ТЗ, например).
Наверное, поэтому, Саша и не сделал универсальным механизм поиска номера метода.

  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #37 - 09. Июля 2008 :: 10:23
Печать  
Блин, что-то у меня странные результаты сравнения получаются Печаль
Вроде все отключил и заморозил, количество сравнений большое, 10000, и при каждой очередной попытке как-то непредсказуемо результаты скачут.
Михаил, сам можешь сравнить разные варианты создания на скорость.
Например, я выше выложил ерт для сравнения.
  

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: Ускоренное создание объектов в 1С
Ответ #38 - 09. Июля 2008 :: 10:32
Печать  
У тебя в методе погрешность измерений приличная.
Лучше стандартно в цикле создавать N объектов и замерять время.

А вот почему результаты выдаются таймером в разном порядке - это я не знаю.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #39 - 09. Июля 2008 :: 12:24
Печать  
kms писал(а) 09. Июля 2008 :: 10:32:
У тебя в методе погрешность измерений приличная.
Лучше стандартно в цикле создавать N объектов и замерять время.

Почему вдруг сильная погрешность?
У меня как раз в цикле объекты и создаются.
На каждый объект отдельный цикл Н раз.

Мои классы тайминга давно проверены, им уже целая куча лет Улыбка
Погрешность ни при чем.

kms писал(а) 09. Июля 2008 :: 10:32:
А вот почему результаты выдаются таймером в разном порядке - это я не знаю.

Я знаю Улыбка - выдается по убыванию времени выполнения, я сделал спец. специальное поведение.
А вообще класс тайминга может выдать результаты и в виде таблицы значений, и сортируй как хочешь.
  

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: Ускоренное создание объектов в 1С
Ответ #40 - 09. Июля 2008 :: 12:49
Печать  
kms писал(а) 09. Июля 2008 :: 10:32:
У тебя в методе погрешность измерений приличная.
Лучше стандартно в цикле создавать N объектов и замерять время.

Ага, твою мысль понял.
Да, ты прав.
Обработку поправил.
Скорости выровнялись.
ТЗ и СЗ без ИнитОбъект стали создаваться еще быстрее, чем существующий метод.
Принимаем именно этот метод (отключение InitObject для контекстов, которые не переопределяют этот метод) как основной.
Но клонирование я все-таки оставляю - например, для КОП я его реализую, будет приличное ускорение, думаю, еще где-нибудь пригодится.

ИМХО нужно перехват InitObject перенести из ТурбоБЛ в мой класс CCreationBoost, все-таки ускорение создания - это задача это класса.

Михаил, что скажешь?
  

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: Ускоренное создание объектов в 1С
Ответ #41 - 10. Июля 2008 :: 01:57
Печать  
artbear писал(а) 09. Июля 2008 :: 12:49:
ИМХО нужно перехват InitObject перенести из ТурбоБЛ в мой класс CCreationBoost, все-таки ускорение создания - это задача это класса.

Перенес пустой InitObject в CMyContextBase.
Добавил в TurboBL поддержку Метаданных и не только.

В TurboBL зарезан HashMethods - думаю, после изменений в TurboBL это можно сделать.
"Справочник" теперь также стал создаваться в несколько раз быстрее, и даже "Документ" чуть быстрее.

Переносить из TurboBL пока не стоит - с TurboBL тема завязана очень сильно.
Скажем, если не включить TurboBL, но зарезать HashMethods - это будет караул.

P.S.
Ну, в целом, мне картина нравится.

P.P.S.
Характер изменений таков, что может возникнуть что-то непредвиденное.
Ну, надо получше тестировать, если что-то найдется - порешаем.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #42 - 10. Июля 2008 :: 03:28
Печать  
kms писал(а) 10. Июля 2008 :: 01:57:
Перенес пустой InitObject в CMyContextBase.
Добавил в TurboBL поддержку Метаданных и не только.

В TurboBL зарезан HashMethods - думаю, после изменений в TurboBL это можно сделать.
"Справочник" теперь также стал создаваться в несколько раз быстрее, и даже "Документ" чуть быстрее.

Ну, в целом, мне картина нравится.

Согласен, я также очень доволен, пусть в итоге и не мой метод победил Улыбка - главное, нашли отличный вариант Улыбка
Очередное ура Улыбка !!
  

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: Ускоренное создание объектов в 1С
Ответ #43 - 10. Июля 2008 :: 04:46
Печать  
В связи с изменениями с InitObject
1. Удалил код по созданию ТЗ и СЗ из строки.
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: Ускоренное создание объектов в 1С
Ответ #44 - 10. Июля 2008 :: 08:06
Печать  
[quote author=artbear link=1215146216/30#43 date=1215665213]
Михаил, будем выпускать релиз ?
Пусть народ пощупает сборку и потестирует?[/quote]
Конечно, выпускай.
Я уж думал, пока пару часиков посплю, ты и выпустишь. ;)

P.S.
Закрываю номера: 3851, 3916, 3969.
Развернутые описания потом добавлю прямо в wiki.

По вектору можно пока не спешить - в следующий раз, наверное, войдет.
  

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