172 похожих чатов

Банально непонятно какую проблему ты решаешь этой "оптимизацией"?

14 ответов

4 просмотра

Размер структур

Константин Меньшиков
Размер структур

Какая разница сколько они занимают? Тебе памяти мало?

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

Aleksandr Druzhinin- Автор вопроса
Тающий звук
Неправильно-написанные структуры, программистами, ...

Это очень странное пожелание. Ди это системный язык и порядок полей должен соответствовать порядку их объявления. Не нужно решать несуществующую проблему. Если люди уперлись в размер структур и выравнивание, они уже знают что к чему и сами все могут сделать, тем более это тривиально. А если люди далеки от этого, то им это и подавно не нужно. Переставить поля в структуре это дело пары минут, что тут сортировать?

Aleksandr Druzhinin
Это очень странное пожелание. Ди это системный язы...

Так поэтому я и предложил атрибут — программист, который пишет этот атрибут, он в курсе, что он делает и для чего

Aleksandr Druzhinin
Это очень странное пожелание. Ди это системный язы...

Константин выше приводил пример с автогенирацией структур и там поля сложней переставить вручную

Aleksandr Druzhinin- Автор вопроса
Тающий звук
Так поэтому я и предложил атрибут — программист, к...

Зачем нужен этот атрибут, если переставить поля можно и без него и порядок полей будет соответствовать их объявлению? Сортировка принесет только неразбериху, потому что поле объявленное первым, может быть третьим на самом деле. Очень странное пожелание

Aleksandr Druzhinin
Зачем нужен этот атрибут, если переставить поля мо...

Принесёт ли сортировка не разбериху или нет — это зависит от алгоритма использования структуры/класса. Я думаю, что большинство кода обращается к полям структуры по их именам, а не через указатели относительно нулевого адреса самой структуры — с этой точки зрения порядок не важен, компилятор сам решит всё. Порядок важен там, где: 1) Идёт обмен данными, т.е. для совместимости. И 2) где используется метопрограммирование, в котором идёт обращение к полям в строго-заданной последовательности, например. Может ещё какие-то случаи я не учёл

Константин Меньшиков
А когда важен порядок

Вообще в Ди много метапрограммирования и это может поломать сторонние библиотеки, которые ты будешь использовать для своих структур

Aleksandr Druzhinin- Автор вопроса
Константин Меньшиков
А когда важен порядок

При работе на низком уровне порядок очень важен. Если мне нужно посмотреть содержимое памяти по указателю, то узнать значение поля будет сложнее чем сейчас. Я сейчас могу зная указатель и бинарные данные сказать какое значение имеет то или иное поле. А при сортировке полей я должен будут сделать обратную сортировку вручную. Ну и зачем эта сортировка нужна? Вы решаете проблему, которой на высоком уровне нет, а на нижнем уровне эта сортировка как собаке пятая нога.

Aleksandr Druzhinin- Автор вопроса
Тающий звук
У него речь только о высоком уровне

Это "оптимизация" затрагивает низкий уровень в первую очередь.

Aleksandr Druzhinin
Это "оптимизация" затрагивает низкий уровень в пер...

Через атрибут не затрагивает, т.к. под контролем программиста всё это — если ты планируешь использовать структуру на низком уровне, то не используешь атрибут и всё

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта