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

Поділитися
Вставка
  • Опубліковано 27 гру 2024

КОМЕНТАРІ •

  • @ДенДенев-в1л
    @ДенДенев-в1л 8 місяців тому +2

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

  • @alexrekunch9589
    @alexrekunch9589 Рік тому +2

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

  • @resolution07
    @resolution07 Рік тому +3

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

  • @ЕгорКузнецов-й5ж
    @ЕгорКузнецов-й5ж 9 місяців тому +1

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

  • @nikolaykozlov4888
    @nikolaykozlov4888 8 місяців тому +1

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

  • @AudraMcdonald-x9m
    @AudraMcdonald-x9m 5 місяців тому +50

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

    • @nda861
      @nda861 3 місяці тому

      Ну и кринж

  • @HelloWorld-ds5rn
    @HelloWorld-ds5rn 7 місяців тому +1

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

  • @video_rezka
    @video_rezka Місяць тому

    передайте через указатель и будет по 8 байт каждая)

  • @bkWorm-gx2pi
    @bkWorm-gx2pi 5 місяців тому

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

    • @YanA-bk1nb
      @YanA-bk1nb 4 місяці тому

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

    • @alexandertsapkov491
      @alexandertsapkov491 3 місяці тому +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 3 місяці тому +1

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