Size: a a a

Язык программирования Julia / Julia programming language

2021 January 19

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
Андрей Оськин
Да.
Я думаю это потому что CSV.jl  read ahead, плюс у него есть ещё всякие автоопределители, которые тоже пытаются сильно вперёд читать.
ага, я спрашивал у автора в слаке про это
просто странно как-то выглядит такое решение, ведь большие csv файлы обычно встречаются в сжатом виде
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
а на маленьких скорость всё равно не так важна
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
кстати, скоро в pluto такая штука появится (по ссылке есть видео) - https://github.com/fonsp/Pluto.jl/pull/844
само будет устанавливать пакеты и записывать версии для полной воспроизводимости
источник

A

Arthur in Язык программирования Julia / Julia programming language
Андрей Оськин
Да.
Я думаю это потому что CSV.jl  read ahead, плюс у него есть ещё всякие автоопределители, которые тоже пытаются сильно вперёд читать.
А разве CSV.File не потоково читает?
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
нет, он mmap файла делает
с .csv.gz такое конечно не работает
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
То есть ему можно попытаться скормить какой-нибудь хитрый IO, но он его просто считает в память и всё.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
И ещё и выругается при этом.
источник

A

Arthur in Язык программирования Julia / Julia programming language
Хм, а CSV.Rows не пробовали? Из доков: Very minimal memory footprint; while iterating, only the current row values are buffered
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
это всё относится только к чтению из обычного csv файла на диске или из массива байт
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Там не имеет значения, File или Rows. И в том и в другом случае он сначала засовывает данные в память.
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
да, я напрямую спрашивал у автора, он говорит что чтения из потока нет и не было
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
просто до какой-то версии deprecation не выдавался когда передаёшь iostream
источник

A

Arthur in Язык программирования Julia / Julia programming language
У rows есть итерации, которые похоже по одному читают, или я неправильно код понимаю: https://github.com/JuliaData/CSV.jl/blob/9b2ebe30f967dc102997700fcf114a7e041e3b33/src/rows.jl#L219
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
при создании Rows() вызывается  Header(), он вызывает getsource(), а там read(): https://github.com/JuliaData/CSV.jl/blob/main/src/utils.jl#L247
источник

A

Arthur in Язык программирования Julia / Julia programming language
Блин, то есть про memory footprint относится только к буферу, который после парсинга значения хранит
источник

A

Arthur in Язык программирования Julia / Julia programming language
Как-то не интуитивно
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
повторюсь что при чтении из обычного csv файла это верно
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
действительно хранит только текущие значения
источник

A

Arthur in Язык программирования Julia / Julia programming language
Да, я про gz
источник