nesco писал(а):
Тормознутости хватает, но не думаю, что предложенная выше реализация (Type) будет работать быстрее
речь идет не о реализации Type - речь идет о работе схем, в которых это вообще не используется
nesco писал(а):
И как может лишнее поле сильно влиять на быстродействие, если мы передаем указатель на структуру, а не саму структуру, если только не копируем их, как при MT
рассмотрим простой код из Share.pas
казалось бы две строчки кода, к которым добавление нового поля ну никаким боком не относится. Однако вспоминаем, что тип string это тот же самый класс, для правильной работы которого нужно вызывать конструктор и деструктор (в С и С++ это можно было бы увидеть воочию открыв исходник класса), а точнее в Delphi вызывается InitArray для каждого строкового и массивного поля из общего метода InitRecord. Отсюда получаем, что добавление <field>:string в структуре TData приведет как минимум к вызову одной лишней подпрограммы во всех методах, в которых есть локальные переменные TData вне зависимости от того, как где и когда они используются. На самом деле добавление поля sdata это уже было неверным решением, хоть и дающем в последствии некоторую простоту обращения с типом.