Dmitry
о, круто
Dmitry
раст опять заплющили
Alexander
раст длины строк хранит
Alexander
на strlen выигрывал
Alexander
ещё можно likely/unlikely добавить
Alexander
ещё можно похитрее копированиие сделать, например по слову, а не по байту
Dmitry
тут главное - вовремя остановиться
Alexander
ещё можно попросить floop-unrolling и т.п.
Alexander
но ну его нафиг
Alexander
надо будет потом с haskell поиграться, все таки мне не нравится
Dmitry
я вот на код смотрю и не понимаю, с чем там можно уже играться
Alexander
не знаю
Alexander
вообще: а. я боюсь строгая байтострока со входом создается мелкими чанками б. можно всегда копировать байтостроки в билдер в. можно сделать какой-то другой билдер, как у меня strictput
Alexander
помнишь был для бампа в openvswitch
Alexander
он чуть-чуть сливал сям
Alexander
т.к. я боюсь на билдере там лишнее делается
Alexander
ну и длины и отступы можно
A64m
Есть вроде готовые билдеры, которые строгие строки собирают
Alexander
сделать тип data IndexedArrayByteString = IAB ByteString (U.Vector Int) (U.Vector Int)
Alexander
мне главное чтобы он делал flush на переполнении
Alexander
у меня был такой, правда не билдер, тогда билдеры ещё не появились как эффективный паттерн
Alexander
тогда должны лишь чуть сливать сишке
Alexander
@greenest_pig а что ты про mmap писал, в какую его сторону?
Dmitry
а как ведет себя realloc, когда не может текущий чанк увеличить?
Dmitry
он сам копирует данные в новый чанк?
Кабачок
да
Dmitry
ладно
Dmitry
а то я его всегда избегаю как раз поэтому
Dmitry
но надо избегать си, конечно, а не realloc
Кабачок
@greenest_pig а что ты про mmap писал, в какую его сторону?
делаем mmap исходного файла и кэш длин префикса-суффикса чтобы быстро по ним бегать
Alexander
нету исходного файла
Alexander
это принципиально
Aragaer
всосать исходный файл это не проблема
Cheese
а как ведет себя realloc, когда не может текущий чанк увеличить?
сишный? выделяет новый и копирует данные
Aragaer
у меня вчера получалось, что самое жирное место это копирование байт, потому что оно идет невыровненное
Alexander
мне понравилась последняя версия у меня
Dmitry
надо посмотреть, конечно, что такое эти билдеры, сходу не ясно, почему они лучше ленивой байтстроки
Dmitry
или почему в ленивой байтстроке нельзя сделать, как в билдере
Alexander
билдер делает чанки хорошего размера
Alexander
байтстрока как получится
Cheese
на нём же написано, что старым указателем нельзя больше пользоваться
Alexander
hPut в байтстроке тоже копирует кусочками
Alexander
причем в ленивой ещё MVar берёт-отпускает делает write(_,"",0) + poll на каждый чих
Alexander
хорошо что ещё writev слепо не делает, как в cloud haskell давным давно
Alexander
это вообще была игра в удиви ядро
Кабачок
нету исходного файла
поэтому я забил
Dmitry
а что у нас есть как раст, только синтаксис получше?
Dmitry
Nim кто-нибудь видел?
Dmitry
или там всё без шансов?
Dmitry
D еще был, кстати
Кабачок
языки есть, умельцев нет
Alexander
pascal?
Alexander
ast2 // CC @catamorphism мы тебе задачку для ats hello world нашли
Aragaer
я б на лиспе написал в качестве упражнения. А то я с ним пока еще не очень
Кабачок
единственный человек, кто из моих знакомых писал на nim, давным-давно перекатился на rust
Alexander
racket
Alexander
я бы предложил кому на лор запостить
Кабачок
у тебя аккаунт есть
Dmitry
на лор-то зачем?
Alexander
но последний контест на си, что я там видел из не полного хардкода я выиграл так что я не уверен что это стоит
Dmitry
они или сюда набегут, или лор надо будет читать
Alexander
учитывая что си я не то чтобы умею
Dmitry
оба варианта хуже
Ilya
а сколько занимает просто запись нулей в файл такого же размера, как и аутпут в этой задаче? Ну с чанками и т.д.
Ilya
это тестили?
Ilya
чтобы понимать, какой предел
Alexander
нет
Alexander
мы конечно не жалеем своего времени, но не настолько
Кабачок
pascal?
кстати, я бы на аде попробовал
Aragaer
dd if=/dev/zero of=/some_file count=11000 bs=100000
Aragaer
что-то в этом духе с нулями
Dmitry
dmz@zen ~/tmp/bsfuck $ time dd bs=1024 count=1000000 if=/dev/zero of=/dev/null 1000000+0 records in 1000000+0 records out 1024000000 bytes (1,0 GB, 977 MiB) copied, 0,321193 s, 3,2 GB/s real 0m0.322s user 0m0.056s sys 0m0.264s
Dmitry
как-то так
Alexander
во аду бы норм
Dmitry
ада ж померла, или, вернее, и не жила никогда
Alexander
у них же новый стандарт с ООП и куртизантками недавно был?
Dmitry
ну у плюсов тоже какие-то стандарты выходят, а толку-то
Ilya
0.3 против 0.9 или сколько там у вас было
Aragaer
1.2 вчера было вроде