A64m
для первого инта зато можно диапазон подобрать
Alexander
если null-terminated
A64m
да, или последний
Alexander
тогда там будет урезанный int
A64m
но поскольку он у нас номер чанка в аллокаторе, то урезанность это нормально
Alexander
а вообще сколько у нас символов получается?
A64m
8*3 - 1
Alexander
23 - для этой задачи даже хватит
A64m
если какие-то csv парсить то куча строк будет попадать инплейс
Alexander
а для внешнего можно тоже что-то умное сделать
Alexander
и выровняное
A64m
@voidlizard 1) куча имплементаций анбоксед массивов - это несколько массивов, но она вообще произвольная это не сторабл, где все последовательно обычно. 2) ну да, скопирует
A64m
но у вектора нету штатного интерфейса увеличения длины
Aragaer
сделал в common lisp буферизацию, но вроде не сильно спасло
Dmitry
раздражает сермяжная правда питона - есть в осномном один способ что-то сделать. что бы это сделать нужен один импорт из sys. и способ работает очень хорошо, учитывая калечность языка
Dmitry
и рантайма
Dmitry
смотришь на пачку импортов на хаскеле, и на 100 вариантов одного и того же, и что-то как-то
Кабачок
главная фишка pypy jit?
Alexander
да
Anonymous
ладн попробую ещё на эликсире
Dmitry
ну тут даже не в jit. текущую задачу сделать таким разным количеством способов, как у нас в хаскеле получилось там просто не выйдет, если только специально не извращаться
Alexander
@voidlizard самое противное что все из этих 100 вариантов не очень
Dmitry
и вот этот гадский один способ - работает довольно хорошо в итоге
Aragaer
чот с буферизацией получилось в полтора раза медленнее, чем без нее
Dmitry
в принципе, это решается каким-то добровольцем, который сделает норм альтернативный prelude
Dmitry
для повседневных нужд
Dmitry
и этот prelude путем каких-то обсуждений? дискуссий? голосований? формировать
Dmitry
и прилагать усилия к его оптимизации
Dmitry
в принципе решается даже без переделки языка
Aragaer
в девнулл пишет с той же скоростью, что и в файл. Хреновый из меня лиспер 8)
Dmitry
наверное, задача даже решаемая. и даже инкрементально решаемая
Leonid 🦇
Уже мильёны прелюдий есть, мне все не нравятся
Dmitry
да. но почему?
Dmitry
нельзя вот сделать какие-нить строки - достаточно хорошие для повседневных нужд?
Leonid 🦇
То всё на тайпклассах, то неймспейс засран какими-то кондуитами
Dmitry
про кондуиты мы тут надысь видели бенчмарки
Алексей
Так есть Text. Но повсюду лезут String
Dmitry
Text тоже тормоз
Dmitry
но может, с UTF лучше и нельзя
Dmitry
так что наверное, иметь Text для UTF и ByteString для байтов - это ок
Dmitry
вопрос надо ли иметь набор всего для ленивых и энергичных
Leonid 🦇
В Питоне можно не боятся застать неймспейс. Байтстринги и текст добавят всего 2 имени. В хаскеле не канает
Dmitry
потому что этот фактор и порождает значительный разброд
Alexander
@A64m_qb0 кстати больше места
Alexander
а не, оно выравнено...
Dmitry
ну, не боятся и правильно, а чего бояться? у нас вообще компилятор это проверяет
Alexander
но вообще можно выравнивать по 32
Leonid 🦇
Я считаю что надо переименовать ByteString.Lazy и Text.Lazy в .Stream
Alexander
тогда у нас 3 char * полных есть или 31 символ
Алексей
Избавиться от строгих строк/байтсрингов мне кажется не выйдет.
Alexander
+
Dmitry
а нельзя сделать строки - строгими, а для чанкования - оставить билдер?
Alexander
билдер это чанкование в сторону записи
Алексей
А если выпилить ленивые то, то любой стриминг придётся делать руками
Alexander
LBS это в сторону чтения
Dmitry
ну сделать какой-нить
Writer, Reader
Alexander
вот какие-нить удобные стримы общего вида было бы хорошо
Leonid 🦇
Dmitry ну а как разрулить три lenght например? Тайпклассы? Префиксы?
Alexander
но сейчас тут такой разброд и одно решение хуже другого
Alexander
ты не того Дмитрия пнул
Dmitry
readFile Handle -> (chunk -> IO Writer) -> IO Writer
Alexander
все эти pipes, machines, conduit, streaming
Alexander
хорошо хотя бы с типов Pipe вроде устаканилось
Leonid 🦇
Черт, дурной телеграмм
Dmitry
чт бы, короче, файлы не "якобы-одним-шматком" читать, а по кускам
Alexander
но для меня все ещё не очевидно что все это лучше iteratee старого доброго
Dmitry
или сделать явные врайтеры - "все целиком" или "по кускам"
Alexander
@voidlizard возможно вы имели ввиду hReadBuf ?
Alexander
в base
Dmitry
ну или ридеры, наоборот
Dmitry
возможно, что-то такое
Alexander
поидее все для этого есть даже в стандартной либе
Alexander
но low level
Alexander
а почему-то все эти дурные conduit от этого уводят далеко
Dmitry
кондуит / итерати превращают код в черти-что
Alexander
в итоге заюзать дешевый интерфейс нереально
Dmitry
ну не говоря о том, что еще и тормозят
Alexander
iteratee ваще для сильных духом
Алексей
У меня с пайпами никаких особых пробле не было. Но я был CPU-bound да и логика довольно простая была
Dmitry
они делают код сложным и пайпо-специфичным. вот их проблема