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

Всем привет! а как вы заполняете массивы? append vs

index и по каким причинам?
1)

arr = make([]int, len(data))
for _, value := range data {
arr[i] = value
}

2)

arr = make([]int, 0, len(data))
for _, value := range data {
arr = append(arr, value)
}

9 ответов

17 просмотров

второе, кстати, можно записать как arr = append([]int(nil), data…) и это будет слегка быстрее - при такой записи arr не будет заполняться нулями

Vladislav- Автор вопроса
Daniel Podolsky
второе, кстати, можно записать как arr = append...

это не всегда возможно т.к. часто надо конвертировать) arr = append(arr, CustomStruct{field: value.field}), тут уже мы обязаны использовать цикл

Вариант с append медленнее. Имхо, лучше использовать вариант без append чтобы показать что исходный и результирующий слайсы имеют одинаковую длину

Vladislav- Автор вопроса
Roman Timofeev
Вариант с append медленнее. Имхо, лучше использов...

https://newbedev.com/golang-slice-append-vs-assign-performance - разницы никакой нет. мы заранее указали размер и компилятор знает, что можно просто скопировать (оптимизации на уровне компилятора)

Vladislav
https://newbedev.com/golang-slice-append-vs-assign...

если структуры будут большие — разница будет заметна

Vladislav
https://newbedev.com/golang-slice-append-vs-assign...

У автора некорректные бенчи. Аллокацию надо вынести за пределы бенча и размер слайса увеличить хотя бы до 4к элементов

Vladislav- Автор вопроса
Roman Timofeev
У автора некорректные бенчи. Аллокацию надо вынест...

Ок, я знаю, что есть такая оптимизация, но с такой пьянкой пойду писать свой бенч, тегну, если не забуду

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта