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

Почему в первом варианте происходит больше аллокаций и больше расход

памяти, по сравнению со вторым?
Бенчмарк - наполнение слайса структурами и возврат из функции

1) func ReturnSliceWithPointers() []*Person
2) func ReturnSliceWithStructs() []Person

7 ответов

23 просмотра

данные по указателям уходят на heap

первый вариант хранит указатель + данные второй хранит только данные указатель это большой инт

Nikita-L Автор вопроса
.
данные по указателям уходят на heap

По каждой созданной структуре данные идут в хип или только на слайс? По второму тоже должны идти в хип по идее

Nikita-L Автор вопроса
Nikita L
По каждой созданной структуре данные идут в хип ил...

в первом случае у вас слайс, который содержит идущие подряд указатели, которые указывают на структуры, разбросанные по памяти во втором у вас слайс, который содержит идущие подряд структуры вот и вся разница

Nikita L
По каждой созданной структуре данные идут в хип ил...

при чем тут хип или стек - если речь про объем памяти. он будет одинаков и на стеке и на куче

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта