Показать сообщение отдельно
Старый 16.02.2017, 18:07   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Основные выводы :
1. Старый способ упаковки-распаковки через X++ методы (как в Global классе 2009-й версии) никуда не годятся и тормозят (примерно в 100 раз медленнее чем методы ядра). Ну это и так было очевидно.

2. Способ упаковки/распаковки
con = [salesTable]
salesTable = conPeek(con, 1)
[salesTable] = con
очень быстрый - примерно такой же по скорости как и новые методы ядра введенные в 2012-й версии. (Правда содержит неприятный баг при упаковке наследуемых табличек. Подробности тут sashanazarov: Table inheritance and collection objects)
В связи с этим непонятно чем так гордились (https://blogs.msdn.microsoft.com/axp...amics-ax-2012/) разработчики ядра 2012-й версии - время упаковки распаковки практически не изменилось. Или они сравнивали с x++ методами ?

3. С учетом наличия багов в 2012-й версии лучше использовать новый метод (вызовы con2buf и buf2con прямо на буфере).

4. В 2012-й вызов Global::con2Buf() может раза в 1,5-2 проигрывать по скорости вызову buffer.conbuf() (вероятно из-за пересоздания объектов и обращения к Dict классам)

5. Если наследования табличек нет, то при переходе с 2009-й на 2012-ю можно оставить старый способ паковки распаковки буферов в контейнер (con = [buffer] и buffer = conPeek(con,1). Соответственно, сэкономить время на переделку кода. Старый способ упаковки имеет еще преимущество при отладке, так как в отладчике видно содержимое контейнера и можно посмотреть все поля буфера. А новый способ покажет обычный blob по которому ничего непонятно.

Последний раз редактировалось Logger; 16.02.2017 в 18:17.
За это сообщение автора поблагодарили: raz (10), Raven Melancholic (5), -DocSerzh- (1), _scorp_ (5).