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

Здравствуйте, у меня []byte огромный порядка 2-3Гб. Я знаю смещение

(символ) начиная с которого мне нужно обрезать определнные куски из этого []byte. Есть какой-то хороший способ чтобы всё это в памяти не копилось, а наоборот этот []byte потихоньку уменьшался моими вырезаниями кусков?

12 ответов

19 просмотров

https://golang.org/pkg/io/#ReadSeeker ?

Alexandr Sokolov
https://golang.org/pkg/io/#ReadSeeker ?

м? у меня уже байты лежат в памяти огромным куском. теперь пытаюсь отрезать кусочки от этого огромного блока. чтобы высвобождать память и последующий поиск по этому []byte занимал меньше времени.

🅺🆁🅴🅻 🅰🅸🅵🅾🅻🅸🅽
м? у меня уже байты лежат в памяти огромным куском...

Интересная у вас задача) Вы можете выделять новые слайсны нужного размера, и делать copy в них из изначального, после чего ибавиться от ссылки на основной слайс, и надеяться, что GC придет за ним

Alexandr Sokolov
Интересная у вас задача) Вы можете выделять новые ...

вот думал без выделения новых слайсов можно как-то. пытаюсь уместиться в свои 16 ГБ памяти и никак не получается нормально)))

🅺🆁🅴🅻 🅰🅸🅵🅾🅻🅸🅽
вот думал без выделения новых слайсов можно как-то...

Забудьте. Под капотом слайса массив -- сплошной блок памяти. Он очистится только полностью. Может и можно каким-то дичайшим хаком это сделать, но кажется, что это из разряда фантастики

Roman Timofeev
как эти данные оказались в памяти?

А вот это действительно очень хороший вопрос. В первую очередь я бы смотрел в эту сторону

Roman Timofeev
как эти данные оказались в памяти?

arr, err := func() ([]byte, error) { file, err := os.Open(*fileToRead) if err != nil { panic(err) } defer file.Close() return ioutil.ReadAll(file) }()

🅺🆁🅴🅻 🅰🅸🅵🅾🅻🅸🅽
arr, err := func() ([]byte, error) { file,...

Ну так ReadSeeker вам в помощь. Не нужно выгружать в память все

Roman Timofeev
а чего не ReadAt?

Да не важно. Зависит от реализации и того, что нужно человеку)

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

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

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
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
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
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта