Anton
ну там выигрыш только если у него много векторов
պլհկ
там копировать вообще ничего не надо
Alexander
Эээ, что-то я торможу. Ну потому что объект db овнер + удобно все векторные штуки иметь + можно добавить если mut ну и тд
Anton
Alexander
Сорян, я не очень догоняю кто тогда слайсом будет владеть и ТД в другом случае.
Anton
слайс будет указывать на оригинальные данные
Alexander
На оригинальные данные из внутренностей serde?!?
Anton
=)
պլհկ
на оригинальные данные из файла прочитанные
Anton
Ты файл в память читаешь?
Alexander
Да
Anton
ну вот туда и будет указывать слайс =)
Alexander
Стоп. Я как бы его не читаю, читает bincode
պլհկ
ну ммапни файл, дай бинкоду слайс
Cuno
Alexander
Т.е. наверное нельзя сказать что я его читаю в память, а как раз не хочу этого делать.
պլհկ
а бинкод что делает по-твоему?
պլհկ
потому что он потом веки аллоцирует и копирует
Alexander
В идеале я бы конечно ждал, что он читает через небольшой буффер, а не сразу всё в память.
Anton
պլհկ
берешь memmap крейт
получаешь из него слайс памяти
десериалайзишь в слайс бинкодом => 0 аллокаций
Anton
Alexander
Alexander
Потому как для меня не очевидно почему надо загружать весь файл в память, а потом ещё и аллоцировать структуры несколько раз в размере больше чем данных в файле.
Alexander
Чтобы на выходе вернуть опять же структуру размером просто с файл.
Alexander
Можно поворчать? Ожидал что Раст 🔥 на итераторах - оказалось не так, но хоть исправили.
Ожидал что bincode будет быстрее молнии , и это не оправдалось, так ещё и память жрёт.
Anton
некоторые вещи специфичны
Anton
В большинстве случаев итераторы жгут
Alexander
Из двух, что успел посмотреть - две специфичны :)
Anton
Я вот ждал что раст будет за меня код писать, а он...
Alexander
И все же к начальному вопросу, а вдруг поможет: где там serde аллоцирует? Вдруг какой хитрый флаг есть - типа экомить память .
Антон
Можно поворчать? Ожидал что Раст 🔥 на итераторах - оказалось не так, но хоть исправили.
Ожидал что bincode будет быстрее молнии , и это не оправдалось, так ещё и память жрёт.
Раст вообще не 🔥 — HKT нет, impl trait нет, vararg нет, именованных аргументов нет, опциональных аргументов нет, специализации трейтов нет, const fn нет, наследования нет, замыканий на стеке нет...
պլհկ
толсто
Антон
Толсто — но всё правда
Loo
Щас бы именованные аргументы в Раст втащить
Антон
Я в курсе, что многое есть на ночной версии, но непонятно когда на стабильную версию завезут
պլհկ
импл трейт в следующем стейбле так-то
Loo
Нахуй стэйбл нужен если в Найтли все есть
պլհկ
оба
պլհկ
почему абьюзят-то?
.ty(pidor).and(sosal)
vs
(ty = pidor, and = sosal)
Loo
պլհկ
fn f<I>(pook: I) where I: Into<Option<u32>> {}
fn main() {
f(5)
}
палю годноту пацаны
Loo
Loo
Alexander
Судзумия
Loo
Loo
В вашем игрушечном расте появились мемори лики
Судзумия
Ору
Євгеній 😌
Ору
https://github.com/oru
Маjко
Alexander
в продолжении bincode. Сделал просто сохранения Vec<String> и загрузка - и она 500Mb+ отжирает на de. Сам файл ~70Mb.
Alexander
параллельный вопрос. почему mem::size_of_val на этот вектор показывает 24 всего? там ~2млн элементов же.
Alexander
если сложить size_of_val строк внутри, то ~59Mb.
Денис
https://gist.github.com/mexus/099e92a1014f321de29638bf615e3475
Денис
измерения
https://gist.github.com/mexus/1db435fdacdb828c008b8d45f7fb4ba2
Alexander
а вот тоже самое для Vec<f32> проверил - есть оверхед, но вполне норм на фоне того что со строками происходит.
Денис
или я чёто не догоняю, или в моём примере оверхед 1.8 кб
Alexander
я может не понял, но там 1.8Мb на ~10mln эээ, одно-двухбайтовых строк?
Денис
в смысле однобайтовых?
Денис
случайного размера, от 1 до 30
Alexander
ааа, ok
Alexander
тогда я торможу - как это всё вообще в 1.8Mb влезло?
Денис
--------------------------------------------------------------------------------
n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B)
--------------------------------------------------------------------------------
0 0 0 0 0 0
1 699,405 568 552 16 0
2 699,923 704 672 32 0
3 700,079 1,736 1,696 40 0
4 700,302 1,848 1,816 32 0
5 816,495 1,848 1,816 32 0
Денис
размер в байтах
Денис
(третья колонка)
Денис
как влезло — сам не понимаю
Alexander
1.8kb???
Alexander
у меня bufreader ещё, но он-то тут причём
Денис
он же буферизует, выделяя каждый раз память под данные
Alexander
а файл норм размера? конечно сорян, очевидно, но не могу понять.
Alexander
Denis, ну он вроде ~40kb буффер и всё
Денис
671 метр