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

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

14 ответов

10 просмотров

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
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
Карта сайта