Aragaer
откуда-то это из файл кэша. А туда он попадет все равно тем же пэйджфолтом
Leonid 🦇
я к тому каким механизмом в ядро переключается
Leonid 🦇
может это влиять на перформанс или нет
Leonid 🦇
а ну да.
Aragaer
MAP_POPULATE (since Linux 2.5.46) Populate (prefault) page tables for a mapping. For a file mapping, this causes read-ahead on the file. This will help to reduce blocking on page faults later. MAP_POPULATE is supported for private mappings only since Linux 2.6.23.
Aragaer
думаю, должно помочь
Leonid 🦇
в любом случае, если уже скорость сисколов мерять начинают, то что это за замеры перформанса ЯП?
Alexander
все спецолимпиады об этом
Leonid 🦇
https://plus.google.com/+LinusTorvalds/posts/YDKRFDwHwr6
Leonid 🦇
в общем интел подосрал
A64m
https://twitter.com/freebroccolo/status/958699727498833921
A64m
подождите-ка но ведь недостатки тайпклассов признавались и 20 лет назад и сейчас признаются.
A64m
другое дело, что использовать эмельные модули для того для чего тайпклассы используются неудобно да и не делает этого никто, для этого в эмелях специальные костыли - перегруженная арифметика и сравниваемые типы в смл и динамическое сравнение как в прости господи руби каком-нибудь в окамле
A64m
сейчас нету даже игрушечного языка в котором для всех тех целей, для каких в расте используются "тайпклассы" и в хаскеле тайпклассы, используются эмельные модули. Т.е. предполагается что авторы раста должны были такой эксперимент на своем языке поставить, чумовая идея, конечно
A64m
он в принципе их ненавидит, за то что не макквинные они
A64m
и не то что бы их не за что ненавидеть, и не то чтобы эмельные модули не нужны, но он предполагает что лучше бы было, если бы вместо "трейтов" в расте была совершенно марсианская штука, которой полтора человека умеют пользоваться и которая вообще никакой проверки "продакшоном" не прошла, даже по сравнению с тайпклассами
Leonid 🦇
трейты - сила, модули - могила.
A64m
они просто очень слабо пересекаются по областям применения и использования одного вместо другого это адовые костыления и энкодинги или экспериментальные фичи
Kirill
@catamorphism а бенчмарки-то сакспарсера у тебяж есть? ну точней парсинга через него, есть оценка сколько выиграл?
Denis
в процессе
Denis
пока не знаю
Denis
хочу попробовать вообще на здоровой рабочей xml-ке
Kirill
гут, былоб интересно, надо будет потом поглядеть, может в xlsx тоже что выиграется
Ю ли я? 🤔
Roman Kashitsyn, 6:07 PM> Ходил на презентацию чувака, который переделал свою клавиатуру Kinesis, чтобы снизить latency. Он был в майке Go, посоветовал ему перейти на Haskell, чтобы не нужно было так много печатать.
sherzod
странно, latency можно легко настроить под себя xset r rate 200 50
Dmitry
а вот SSE все равно не сработает, вроде компилятор не настолько умный
В недрах ByteString при поиске символа идёт обращение к memchr из glibc. Он-то, надо полагать, в векторные инструкции умеет?
Dmitry
http://hackage.haskell.org/package/bytestring-0.10.8.2/docs/src/Data.ByteString.html#elemIndices
Alexander
@A64m_qb0 как посчитать минимальный размер хипа с которым программа может работать если задавать -A
Alexander
в предположении, что во второе поколение ничего (почти) улетать не должно
Alexander
это-то понятно
Aλexander
Вполне серьезно
Alexander
я тоже
Alexander
это понятно, но такой ответ не подходит
A64m
в смысле, какой размер хипа будет при таких настройках? если у нас -AXm то где-то X * N * 2 плюс колько там на второе поколение выделяется по минимуму, я сходу не вспомню, ну пусть еще на 2 умножить
Alexander
да, вот X*N главное
Alexander
я так понимаю может быть меньше чем на 2 за счет скорости работы?
Alexander
кстати, что там хип на куски делит -n?
Alexander
allocation area т.е.
A64m
ну хип в любом случае на куски делится, n это куски которые выделяются капабилити целиком, т.е. по умолчанию весь A на один капабилити
Alexander
ага, т.е. с -n я могу уменьшить константу?
A64m
так что это не чейни какой где 2 ровно, аллокатор блочный, т.е. тут 2 будет оценка сверху, наверное
A64m
не не константа от n не зависит
Alexander
сейчас у меня прокатило X*N+10
Alexander
+8 даже
A64m
просто раз аллокатор блочный то выделяется ненужного места поменьше чем при простом копирующем сборщике где строго 2
Denis
ох жуть как же генерики компиляцию замедляют
Alexander
use TH
A64m
да и TH замедляет
Alexander
у меня -A32M -N1 -M40M сейчас работает
A64m
ну это значит что на момент сборки вымирает почти все
Alexander
угу
Alexander
это и проверяем
A64m
а, ну собственно это по условию задачи, что второе не растет
Alexander
я уверен, что +8 это даже слишком много
Alexander
блин ручной разбор csv + создание бинарного протокола постреса в 10 раз тормознее чем загрузка постресом
Alexander
впрочем это ожидалось
Alexander
а ты думал
Alexander
вообще разумно ожидать меньшей просадки
A64m
а что за ручной разбор csv?
Leonid 🦇
постгрес умеет некоторые csv сам отдуплять
Alexander
вообще говоря, copy сам по себе в несколько раз быстрее insert
Alexander
я что-то писал про insert?
Alexander
постгрес умеет некоторые csv сам отдуплять
я про это и говорю copy to format='csv', быстрее в 10 раз чем copyto format='binary' если разбор csv в haskell коде
Leonid 🦇
забавно
Alexander
а, понял о чем ты
Alexander
правда парсер у постреса не очень
sherzod
впрочем это ожидалось
а почему ожидалось?
Alexander
а у тебя в обоих случаях там FROM STDIN?
sherzod
надеюсь не потому что это Haskell а не C :)
Alexander
Haskell, а не C тоже вносит
Leonid 🦇
ну может если у тебя постгрес на другом хосте, или даже датацентре то может более плотная упаковка что и выиграет
A64m
в байтстринге супертормозные парсеры чисел
Alexander
это ж csv там по умолчанию все как текст
A64m
можно какой-то там отдельный пакет стюарта попробовать
Alexander
в общем мне все равно в haskell разбирать
Alexander
надо ещё csv conduit вместо cassava использовать