Golang: выравнивание полей структур. Struct padding.

แชร์
ฝัง
  • เผยแพร่เมื่อ 4 พ.ย. 2024

ความคิดเห็น • 12

  • @ДенДенев-в1л
    @ДенДенев-в1л 6 หลายเดือนก่อน +2

    Очень крутая и полезная информация. А главное объяснение максимально понятное и доходчивое!

  • @ЕгорКузнецов-й5ж
    @ЕгорКузнецов-й5ж 8 หลายเดือนก่อน +1

    Спасибо большое за очень доходчивое объяснение данной особенности языка!

  • @resolution07
    @resolution07 ปีที่แล้ว +3

    Интересный момент. Начинал свою карьеру с высокоуровневого языка, поэтому не интересовался такими моментами по оптимизации\работы с памятью. Сейчас, когда начинают назревать задачи где надо встраивать сервисы с высокой производительностью, возникают проблемы)
    Было бы еще интересно послушать про DTO и репозитории (PHP). Заметил что многие не до недооценивают эти подходы

  • @nikolaykozlov4888
    @nikolaykozlov4888 6 หลายเดือนก่อน

    Отличное объяснение! Спасибо!

  • @alexrekunch9589
    @alexrekunch9589 ปีที่แล้ว +2

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

  • @HelloWorld-ds5rn
    @HelloWorld-ds5rn 5 หลายเดือนก่อน +1

    Скорее всего, надо располагать по убыванию поля

  • @AudraMcdonald-x9m
    @AudraMcdonald-x9m 3 หลายเดือนก่อน +50

    А как вы думаете, стоит ли вручную упорядочивать поля в структурах для оптимизации? я сам недавно выбирал курсы по IT, рассматривал разные варианты, но Skypro помогли найти первый заказ))

    • @nda861
      @nda861 หลายเดือนก่อน

      Ну и кринж

  • @bkWorm-gx2pi
    @bkWorm-gx2pi 3 หลายเดือนก่อน

    Почему размер переменной следующой структуры 12b?
    type A struct {
    value int32
    is1 bool
    is2 bool
    is3 bool
    is4 bool
    is5 bool
    }

    • @YanA-bk1nb
      @YanA-bk1nb 3 หลายเดือนก่อน

      У тебя наверно выравнивание 4б а не 8

    • @alexandertsapkov491
      @alexandertsapkov491 2 หลายเดือนก่อน +1

      выравнивание не зависит только от архитектуры процессора. в go выравнивание для всех типов полей структуры будет работать, как выравнивания для самого большого типа данных в структуре.
      у вас это int32, его выравнивание 4. и для всех последующих полей оно будет 4. поэтому, сначала int32 - 4 байта, потом 4 bool - 4 байта и еще один bool в 4 байта, получаем 12.
      если замените int32 на int16, то выравнивание станет 2, тогда int16 - 2 байта, 2 bool - 2 байта, еще 2 bool - 2 байта, и еще один bool - 2 байта, получим 8.

    • @bkWorm-gx2pi
      @bkWorm-gx2pi 2 หลายเดือนก่อน +1

      @@alexandertsapkov491 спасибо за пояснение