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

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

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

12 ответов

9 просмотров

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?

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

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
Коллеги, доброе утро. Запустил на удаленном хосте приложение (ручками зашел туда по ssh и запустил, не командой удаленно). Создал потом ssh-туннель, и с моей машины приложение...
Δημήτηρ
9
Карта сайта