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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Ускоренное создание объектов в 1С
04. Июля 2008 :: 04:36
Печать  
Народ, вчера обдумывал проблему медленного создания объектов в 1С
и у меня родился вопрос - почему мы для создания объектов юзаем CreateObject/Instance(ИмяКласса), а не напрямую создаем объект через new CStruct, new CVTExtended и т.д.


В результате проверки этой идеи в 1С++ был реализован подобный подход, пока для примера ускоренное создание ИТЗ и Структуры.

Вот результаты сравнения времени создания объектов:
Цитата:
обычное создание ИндексированнаяТаблица - 280 (1000 вызовов)
СписокЗначений - 162 (1000)
ТаблицаЗначений - 162 (1000)
обычное создание Структура - 112 (1000)
ускоренное создание ИндексированнаяТаблица - 89 (1000)
ускоренное создание Структура - 44 (1000)


Цитата:
обычное создание ИндексированнаяТаблица - 2988 (10000)
ТаблицаЗначений - 1756 (10000)
СписокЗначений - 1540 (10000)
обычное создание Структура - 1265 (10000)
ускоренное создание ИндексированнаяТаблица - 590 (10000)
ускоренное создание Структура - 557 (10000)


Т.е. для ИТЗ ускорение 68%-80% и выше при больших объемах
для Структуры 60%
Соответственно для других объектов 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: Ускоренное создание объектов в 1С
Ответ #1 - 04. Июля 2008 :: 04:40
Печать  
Например, в одном из самом тяжелых методе ИТЗ::Группировать много времени отнимает создание доп. таблиц ТЗПотомки как раз методом CreateObject("IndexedTable"), т.е. при помощи предложенного ускорения создания объекта данный метод должен также довольно сильно ускориться Улыбка

УРА Улыбка
  

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: Ускоренное создание объектов в 1С
Ответ #2 - 04. Июля 2008 :: 04:46
Печать  
artbear писал(а) 04. Июля 2008 :: 04:40:
Например, в одном из самом тяжелых методе ИТЗ::Группировать много времени отнимает создание доп. таблиц ТЗПотомки как раз методом CreateObject("IndexedTable"), т.е. при помощи предложенного ускорения создания объекта данный метод должен также довольно сильно ускориться Улыбка

УРА Улыбка


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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #3 - 04. Июля 2008 :: 04:49
Печать  
Закономерный вопрос:
Цитата:
Слушай, это тестировать и тестировать надо...
Кто его знает, что 1С-на еще делает при выполнении CreateObject.
Где, например, она начинает ссылки считать на созданные объекты


Я говорю не про все объекты, а только те, поведение которых мы знаем и которым мы можем управлять, например, встроенные объекты 1С++ или других ВК Улыбка


Поведение CreateObject, конечно, более сложное, чем простое new Улыбка
  

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С
Ответ #4 - 04. Июля 2008 :: 05:03
Печать  
Для реализации ускорения для создания различных объектов из ВК, написанных на С++, я планирую следующее:
1. Будет использоваться техника создания объектов по прототипу или клонирование, т.е. каждый объект сам знает, как создавать себе подобных. Этим будет достигнута универсальность.
2. Технически все просто
а) Создается интерфейс типа ICloneCreated c методом
  CBLContext* Clone() const = 0;
б) все объекты, которые хотят быстро создаваться, должны реализовывать этот интерфейс
в) в 1С++ в моем, уже существующем классе ускорения создания объектов CCreateInstanceBoost, будет реализован механизм кеширования -
при создании объекта по имени указанное имя ищется в карте методов,
если в карте не найдено соответствия, объект создается, как обычно, по имени, далее проверяется наличие интерфейса ICloneCreated, если он есть, то создается второй объект, который и заносится в карту методов;
Если в карте найдено соответствия, то создается новый объект путем вызова метода Clone()
В итоге все быстро и удобно.

ЗЫ кстати, подозреваю, что быстрое создание ТЗ и СЗ через сериализованное представление как раз и делается через прямое создание путем new Улыбка

ЗЫ подобное будет только для объектов, созданных на С++ !!
  

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



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #5 - 04. Июля 2008 :: 05:17
Печать  
+1
Эт хорошо ускорение создания,изза этого приходилось код некторых методов класса выносить из класса в глоб функцию, т.к. тормозит создание классов, на замере производительности полгода назад такое заметил
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #6 - 04. Июля 2008 :: 05:34
Печать  
Зарегил хотелку http://www.1cpp.ru/bugs/show_bug.cgi?id=3962
  

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



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #7 - 04. Июля 2008 :: 06:13
Печать  
+100  Улыбка
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #8 - 04. Июля 2008 :: 06:17
Печать  
Кстати, вот еще вопрос:
Цитата:
СоздатьОбъект у нас умеет ускоренно создавать ряд блконтекстов путем кеширования RTC.
Научить его так создавать Вектор не достаточно?

Как раз выложенное мной сравнение и есть сравнение через new и через RTC, c обычным 1C, без загруженной 1С++, разница еще больше Улыбка
  

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



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #9 - 04. Июля 2008 :: 06:36
Печать  
Если бегло, то внутри CValue::CreateObject вызывается следующий код:
* CValue::UnlinkContext();
* CBLContext::CreateInstance()
* CValue::SetType()
  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Ускоренное создание объектов в 1С
Ответ #10 - 04. Июля 2008 :: 07:21
Печать  
При группировании индексированной таблицы(по группам) - там кажется создается нехилое
количество подтаблиц - поможет?
Или там уже все оптимизировано?
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #11 - 04. Июля 2008 :: 08:26
Печать  
kiruha писал(а) 04. Июля 2008 :: 07:21:
При группировании индексированной таблицы(по группам) - там кажется создается нехилое
количество подтаблиц - поможет?
Или там уже все оптимизировано?


Артур говорил об этом выше... разве нет?
"Например, в одном из самом тяжелых методе ИТЗ::Группировать много времени отнимает создание доп. таблиц ТЗПотомки как раз методом CreateObject("IndexedTable")" - (с) Артур
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Ускоренное создание объектов в 1С
Ответ #12 - 04. Июля 2008 :: 08:42
Печать  
vandalsvq писал(а) 04. Июля 2008 :: 08:26:
kiruha писал(а) 04. Июля 2008 :: 07:21:
При группировании индексированной таблицы(по группам) - там кажется создается нехилое
количество подтаблиц - поможет?
Или там уже все оптимизировано?


Артур говорил об этом выше... разве нет?
"Например, в одном из самом тяжелых методе ИТЗ::Группировать много времени отнимает создание доп. таблиц ТЗПотомки как раз методом CreateObject("IndexedTable")" - (с) Артур


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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ускоренное создание объектов в 1С
Ответ #13 - 04. Июля 2008 :: 08:45
Печать  
artbear писал(а) 04. Июля 2008 :: 04:36:
Что скажете? Какие подводные проблемы я пропустил?

Сначала надо бы посмотреть на реализацию CreateInstance() и понять, почему она настолько медленнее простого создания объекта.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #14 - 04. Июля 2008 :: 10:53
Печать  
kms писал(а) 04. Июля 2008 :: 08:45:
artbear писал(а) 04. Июля 2008 :: 04:36:
Что скажете? Какие подводные проблемы я пропустил?

Сначала надо бы посмотреть на реализацию CreateInstance() и понять, почему она настолько медленнее простого создания объекта.

Само собой, предварительно я посмотрел реализацию CreateInstance()
Она делает следующее
1. Идет тупой перебор в цикле имен всех зарегистрированных классов, сравнение через lstrcmpiA - вот основной тормоз
Если объект найден, то по полученному индексу получается Рантайм-класс, после чего создается объект pCont = CRuntimeClass::CreateObject(), далее вызывается pCont = CBLContext::InitObject(ИмяКласса)
2. Если объект не найден в цикле, идет попытка создания КОМ, ОЛЕ-объекта

В принципе уже существующее ускорение создание объектов (ДмитрО + я) - основано на схеме из п.1, только вместо тупого, тормозного перебора идет очень быстрый поиск в CIStringMap,  а далее также создание из Рантайм-класса, и опять вызов ИнитОбъект.

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

Да и результаты говорят сами за себя.

ЗЫ обычная беда 1С - такое впечатление, что авторы кода 1С не знают, ничего кроме CArray и тупого перебора в цикле Улыбка
  

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С
Ответ #15 - 04. Июля 2008 :: 12:26
Печать  
artbear писал(а) 04. Июля 2008 :: 10:53:
В принципе уже существующее ускорение создание объектов (ДмитрО + я) - основано на схеме из п.1, только вместо тупого, тормозного перебора идет очень быстрый поиск в CIStringMap,  а далее также создание из Рантайм-класса, и опять вызов ИнитОбъект.

Дак я помню.
Странно, что несмотря на это, прямое создание объекта у тебя выполняется в 5 раз быстрее для ИТ.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #16 - 07. Июля 2008 :: 04:24
Печать  
Могу кинуть тестовую сборку, сам убедишься Улыбка
  

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С
Ответ #17 - 08. Июля 2008 :: 13:11
Печать  
Реализация для icpp готова.
Выкладываю тестовую сборку для сравнения скоростей создания.
В архиве есть готовая обработка для сравнения скоростей.

Текущие ограничению
1. по умолчанию включен самый быстрый режим создания объектов
2. Супербыстрый режим создания пока реализован только для ИндексированнаяТаблица и Структура
3. Для переключения между различными режимами создания есть тестовый (временный) метод Фабрика::ТестОтключитьБыстроеСоздание_Артур(Парам), где
Парам = 0 - включить мое быстрое создание (по-умолчанию)
Парам = 1 - создание объектов через чистое 1С - т.е. режим быстрого создания объектов в 1С++ просто отключен
Парам = 2 - создание объектов также, как в текущей 1С++ (3.0 или 2.5)
Метод тестовый и в основной сборке его не будет.

Мои результаты на 1000 созданий различных объектов.
Цитата:
создание ИндексированнаяТаблица - чистый 1С - 230 (1000)
обычное создание ИндексированнаяТаблица - текущее 1С++ - 113 (1000)
создание Структура - чистый 1С - 78 (1000)
СписокЗначений - чистый 1С - 76 (1000)
ТаблицаЗначений - чистый 1С - 71 (1000)
ТаблицаЗначений - 1С++ - 25 (1000)
супер. ускоренное создание ИндексированнаяТаблица - 22 (1000)
обычное создание Структура - текущее 1С++ - 22 (1000)
СписокЗначений - 1С++ - 21 (1000)
супер. ускоренное создание Структура - 20 (1000)


Обалденные результаты Улыбка
  

icpp_speed_artbear.rar ( 521 KB | Загрузки )

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С
Ответ #18 - 08. Июля 2008 :: 13:17
Печать  
Обалдеть - тесты для ИТЗ стали проскакивать просто моментально, почти незаметно - нажал и тут же результаты для 176 тестов, а раньше все-таки приходилось ждать их завершения.

Ура! Улыбка
  

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С
Ответ #19 - 08. Июля 2008 :: 13:26
Печать  
Афигеть. Улыбка

А почему в основной сборке не будет?
Или ветку что-ли сделай, чтобы если что с кодом повертеть можно было.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #20 - 08. Июля 2008 :: 13:29
Печать  
kms писал(а) 08. Июля 2008 :: 13:26:
А почему в основной сборке не будет?
Или ветку что-ли сделай, чтобы если что с кодом повертеть можно было.

Основной код я только что залил в репозитарий.
Думаю сейчас выложить сборку 3.0.1.8

А в сборке никогда не будет тестового метода ФабрикаОбъектов::ТестОтключитьБыстроеСоздание_Артур(Парам) - т.к. он фактически нужен только для сравнения, а в реальных базах не нужен.

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

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С
Ответ #21 - 08. Июля 2008 :: 13:31
Печать  
Да, и в репозитарии пока ускорены только ИТЗ и Структура.
Остальные объекты, за которым я ответственен, ускорю в ближайшее время.

Михаил, рекомендую и для твоих коллекций, в т.ч. и для Вектора, выполнить реализацию интерфейса Utils1cpp::ICloneCreated.
  

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С
Ответ #22 - 08. Июля 2008 :: 13:36
Печать  
artbear писал(а) 08. Июля 2008 :: 13:29:
kms писал(а) 08. Июля 2008 :: 13:26:
А почему в основной сборке не будет?
Или ветку что-ли сделай, чтобы если что с кодом повертеть можно было.


А в сборке никогда не будет тестового метода ФабрикаОбъектов::ТестОтключитьБыстроеСоздание_Артур(Парам) - т.к. он фактически нужен только для сравнения, а в реальных базах не нужен.

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

Все-таки залил этот тестовый метод в репозитарий, так что в отладочной сборке можно проверять собственные объекты.
  

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


I Love YaBB 2!

Сообщений: 123
Зарегистрирован: 19. Мая 2006
Re: Ускоренное создание объектов в 1С
Ответ #23 - 08. Июля 2008 :: 14:09
Печать  
Артур, а в 2.5 будет ?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #24 - 08. Июля 2008 :: 14:19
Печать  
Alister писал(а) 08. Июля 2008 :: 14:09:
Артур, а в 2.5 будет ?

Вряд ли, т.к. очень не хочется вести 2 версии.
Возможно, фичи, внесенные нами в 3.0 наподобие моего ускорения, быстрее заставят народ перейти на 3.0, как некоторые уже давно сделали, в т.ч. и я естественно Улыбка
  

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С
Ответ #25 - 08. Июля 2008 :: 19:31
Печать  
Артур.
Похоже, должен тебя огорчить.

Вся твоя механика бесполезна.
Ибо единственное, что она делает - это избавляет от InitObject() - и все.

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

Можно и эксперементально в этом убедиться - просто заремить в нужном месте CCreatedStrategyFromRuntimeClass

//            pCont->InitObject(szClassName);

и посмотреть на тайминги.

Короче, все прекрасно, но напрасно.
Ну, впрочем, для разминки, наверное, было неплохо. Улыбка

P.S.
Кстати, CIStringMap сам управляет размером hash таблицы в обе стороны, и делает это неплохо.
Так что никаких AutoGrowIfNeeded можно не изобретать.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ускоренное создание объектов в 1С
Ответ #26 - 08. Июля 2008 :: 20:37
Печать  
Есть простое предложение.

Избавиться от CBLContext::InitObject(LPCSTR).
Огульно делать это нельзя, ибо InitObject может нести полезную нагрузку.

Но чистый CBLContext::InitObject() - это просто HashMethods(), для CMyContextBase и подобных это не нужно.

P.S.
Никогда бы не подумал, что нужно ТАК хешировать методы.
Зачем это делать при каждом создании объекта?

P.P.S.
Корни проблемы тормозов создания ТЗ и СЗ, полагаю, также уходят в InitObject.

P.P.P.S.
Ппц. ;)
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #27 - 09. Июля 2008 :: 03:39
Печать  
Согласен, наверное, все так и есть Улыбка
На всякий случай проверю различные варианты.

ЗЫ По AutoGrowIfNeeded - фактически это исходный код ДмитрО, автора CIStringMap, поэтому я его использовал, типа автору виднее.
  

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С
Ответ #28 - 09. Июля 2008 :: 03:57
Печать  
kms писал(а) 08. Июля 2008 :: 19:31:
Артур.
Похоже, должен тебя огорчить.

Вся твоя механика бесполезна.
Ибо единственное, что она делает - это избавляет от InitObject() - и все.


Нет, все-таки не настолько безполезна Улыбка
1. Все-таки моя схема немного, но выигрывает у схемы без InitObject()
2. Самое главное - моя схема позволяет много большее - она добавляет к классу технику созданию объекта из прототипа объекта. А т.к. класс намного лучше знает о своем создании, чем его окружение, он может и намного более эффективно создать объект.
Например, для пользовательского класса (а он ведь очень медленно создается даже в режиме оптимизации) можно не выполнять довольно медленный поиск статических данных класса из системных данных, а просто скопировать их из прототипа, и будет достигнуто ускорение.

Поэтому предлагаю компромиссное решение -
оставляем мою схему + избавляемся от InitObject для некоторых классов.

Например, в CMyContextBase в InitObject не делаем вызов CBLContext::InitObject и т.д.
  

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С
Ответ #29 - 09. Июля 2008 :: 04:08
Печать  
[quote author=kms link=1215146216/15#26 date=1215549440]
Избавиться от CBLContext::InitObject(LPCSTR).
Огульно делать это нельзя, ибо InitObject может нести полезную нагрузку.

Но чистый CBLContext::InitObject() - это просто HashMethods(), для CMyContextBase и подобных это не нужно.
[/quote]
А ты смотрел CBLContext::InitObject(CType const&) ?
Там такой же код или что-то еще ?
  

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С
Ответ #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 записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

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

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #46 - 10. Июля 2008 :: 10:19
Печать  
[quote author=kms link=1215146216/30#44 date=1215677167]
Конечно, выпускай.[/quote]
Мне чё-т первый раз страшновато качать новую сборку. ИМХО, это очень существенные изменения.
Ну если гуру скажут, что всё пучком - скачаю и даже протестирую на своих!  ;)
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #47 - 10. Июля 2008 :: 10:24
Печать  
[quote author=JohnyDeath link=1215146216/45#46 date=1215685151][quote author=kms link=1215146216/30#44 date=1215677167]
Конечно, выпускай.[/quote]
Мне чё-т первый раз страшновато качать новую сборку. ИМХО, это очень существенные изменения.
Ну если гуру скажут, что всё пучком - скачаю и даже протестирую на своих!  ;)
[/quote]
Абсолютно ничего страшного.
1. Конфа юнит-тестирования на страже.
У меня все тесты проходят, т.е. куча различных объектов, как 1С++, так и 1С, создается и уничтожается прекрасно, в т.ч. и справочники, и документы.
2. Есть и ручное тестирование, которое помогает автоматическому.
3. Кто мешает поставить сначала ВК себе, пару дней поюзать на своих базах в рабочей обстановке, а уж потом запускать в боевую базу.

4. Не бойся, мы с тобой (с) знам.фильм :)
  

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



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #48 - 10. Июля 2008 :: 10:34
Печать  
С удовольствием потестим  Улыбка
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ускоренное создание объектов в 1С
Ответ #49 - 10. Июля 2008 :: 10:58
Печать  
[quote author=JohnyDeath link=1215146216/45#46 date=1215685151][quote author=kms link=1215146216/30#44 date=1215677167]
Конечно, выпускай.[/quote]
Мне чё-т первый раз страшновато качать новую сборку. ИМХО, это очень существенные изменения.
Ну если гуру скажут, что всё пучком - скачаю и даже протестирую на своих!  ;)
[/quote]
Да все ОК. Я тестировал довольно экстенсивно.

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

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #50 - 10. Июля 2008 :: 11:16
Печать  
Все ваши тестирования, я так понимаю, проходят в однопользовательском режиме (может даже в монопольном). А основная же работа происходит в многопользовательском, тут могут всплыть новые, незамеченные ранее, косяки.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #51 - 10. Июля 2008 :: 11:25
Печать  
JohnyDeath писал(а) 10. Июля 2008 :: 11:16:
Все ваши тестирования, я так понимаю, проходят в однопользовательском режиме (может даже в монопольном). А основная же работа происходит в многопользовательском, тут могут всплыть новые, незамеченные ранее, косяки.

Понимаешь, мы меняем такую вещь, как создание объектов 1С, для которой ИМХО нет разницы, монопольный или разделенный режим, мы не затрагиваем те методы/свойства, который влияют на работу с базой.
  

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #52 - 10. Июля 2008 :: 12:10
Печать  
[quote author=artbear link=1215146216/45#47 date=1215685460]У меня все тесты проходят, т.е. куча различных объектов, как 1С++, так и 1С, создается и уничтожается прекрасно, в т.ч. и справочники, и документы.[/quote]
Артур, подскажи, плиз как можно протестировать корректное уничтожение объекта.
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускоренное создание объектов в 1С
Ответ #53 - 10. Июля 2008 :: 12:30
Печать  
[quote author=steban link=1215146216/45#52 date=1215691829][quote author=artbear link=1215146216/45#47 date=1215685460]У меня все тесты проходят, т.е. куча различных объектов, как 1С++, так и 1С, создается и уничтожается прекрасно, в т.ч. и справочники, и документы.[/quote]
Артур, подскажи, плиз как можно протестировать корректное уничтожение объекта.[/quote]
1. Создаем пустой класс-наследник с одним деструктором, в деструкторе которого ставим или точку останова, или какой-нибудь лог пишем, и создаем в своем коде не класс-родитель, а класс-наследник.
2. Перехватываем деструктор объекта и также или точка останова или лог.
3. Пожиратель памяти Палыча - опять наследник, но с конструктором, в котором кушается куча памяти, создаем наследника и по диспетчеру задач смотрим расход памяти.
  

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С
Ответ #54 - 12. Июля 2008 :: 10:56
Печать  
artbear писал(а) 10. Июля 2008 :: 10:18:
Может быть, ты выпустишь ?
Мои исходники пока в разобранном состоянии, мучаю Вектор и ИТЗ Улыбка

Выпустил.
Ты тогда по необходимости дополни описание по закрытым тобой заявкам.
  

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