Размер структур
Какая разница сколько они занимают? Тебе памяти мало?
Неправильно-написанные структуры, программистами, которые не знают об этой особенности, после автоупорядочивания, будут меньше памяти занимать, будут меньше расходовать кеша и также могут ускориться алгоритмы, работающие с ними. Решают те же проблемы, что и любая оптимизация
Это очень странное пожелание. Ди это системный язык и порядок полей должен соответствовать порядку их объявления. Не нужно решать несуществующую проблему. Если люди уперлись в размер структур и выравнивание, они уже знают что к чему и сами все могут сделать, тем более это тривиально. А если люди далеки от этого, то им это и подавно не нужно. Переставить поля в структуре это дело пары минут, что тут сортировать?
Так поэтому я и предложил атрибут — программист, который пишет этот атрибут, он в курсе, что он делает и для чего
Константин выше приводил пример с автогенирацией структур и там поля сложней переставить вручную
Зачем нужен этот атрибут, если переставить поля можно и без него и порядок полей будет соответствовать их объявлению? Сортировка принесет только неразбериху, потому что поле объявленное первым, может быть третьим на самом деле. Очень странное пожелание
А когда важен порядок
Принесёт ли сортировка не разбериху или нет — это зависит от алгоритма использования структуры/класса. Я думаю, что большинство кода обращается к полям структуры по их именам, а не через указатели относительно нулевого адреса самой структуры — с этой точки зрения порядок не важен, компилятор сам решит всё. Порядок важен там, где: 1) Идёт обмен данными, т.е. для совместимости. И 2) где используется метопрограммирование, в котором идёт обращение к полям в строго-заданной последовательности, например. Может ещё какие-то случаи я не учёл
Вообще в Ди много метапрограммирования и это может поломать сторонние библиотеки, которые ты будешь использовать для своих структур
При работе на низком уровне порядок очень важен. Если мне нужно посмотреть содержимое памяти по указателю, то узнать значение поля будет сложнее чем сейчас. Я сейчас могу зная указатель и бинарные данные сказать какое значение имеет то или иное поле. А при сортировке полей я должен будут сделать обратную сортировку вручную. Ну и зачем эта сортировка нужна? Вы решаете проблему, которой на высоком уровне нет, а на нижнем уровне эта сортировка как собаке пятая нога.
У него речь только о высоком уровне
Это "оптимизация" затрагивает низкий уровень в первую очередь.
Через атрибут не затрагивает, т.к. под контролем программиста всё это — если ты планируешь использовать структуру на низком уровне, то не используешь атрибут и всё
Обсуждают сегодня