🐙 Antony
Чтение через read как правило читает в оперативу а потом копирует в твой буфер Чтение через mmap читает просто в оперативу Экономия на memcpy
Pavel
вы всё ещё про файлы? https://stackoverflow.com/a/17925143/864782
Matwey
Ну это от платформы зависит
Крылатый
Зависит от системы. Игоры критичны на чтение с лиска, например
Berkus
mmap дает выигрыш при random seek read; при последовательном - выгода не должна быть большой
Berkus
даже если использовать его с madvise все равно паттерн чтения такой же линейный, так что большую часть времени ты читаешь со скоростью memcpy
🐙 Antony
вы всё ещё про файлы? https://stackoverflow.com/a/17925143/864782
я упорный: если использовать MAP_HUGETLB для mmap, то будет чуть быстрее чем последний вариант :)
🐙 Antony
Это незаметно ускоряет, если происходит чтение страницы с диска, и ощутимо ускоряет, если работаете с уже подгруженной в оперативу страницей (например если этот файл кто-то недавно читал/писал)
Dmitry
почему как только я делаю std::experimental::filesystem::path p = "/some/path" пишет ошибка: undefined reference to `std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts()' ?
Dmitry
что?
Dmitry
это только для experimental или всегда так будет?
Dmitry
спасяб
🐙 Antony
я упорный: если использовать MAP_HUGETLB для mmap, то будет чуть быстрее чем последний вариант :)
Современные Линуха это делают автоматически. Нужно поэкспериментировать с MAP_POPULATE и перемерить на новых ядрах...
🐙 Antony
при чтении через read() ОС точно так же пойдет в кеш, разве нет?
Да, но из кеша ОС скопирует в пользовательских буфер, тоесть вызовет memcpy
Pavel
как эти hugetlb включить то по нормальному?
Pavel
ну у меня тут инвалиды аргументы
Pavel
hugetlbfs надо монтировать?
Pavel
или это просто в ядре должно быть включено?
Pavel
включено. дефолтное арчевое
Pavel
в nr_hugepages надо писать?
Pavel
MAP_POPULATE в два раза быстрее того варианта что с posix_fadvise на SO
Pavel
надо проверить на большом кол-ве файлов. у меня как раз утилита для этого есть
Berkus
так mmap это и делает...
🐙 Antony
Можно, но для этого надо иметь куски памяти (в которые вы читаете), выровненные по размеру страницы. Это оч редко когда случается
Nik
Т.е. только для С
Nik
Не С++Маке же, в самом деле
Ioann_
это смешно, а new по твоему что обычно использует? )
Ну так это внутренняя реализация, сам аллокатор ее на прямую не дергает. Еще к слову, есть всякие VirtualAlloc и т.п
Ioann_
Ну и конечно про aligned malloc не забывай - как никак, а небольшой разгон дает.
Ioann_
Mmap мапит файл в память, vall - память подхватывает у системы для аллокации, идеально работает с блоками степени 2ух, но еще идеальнее 4kb.
Ioann_
И еще вроде ммапом устройства ио можно отображать
Ioann_
Вроде пишут что так можно: Делать mmap(PROT_NONE. MAP_NORESERVE) для резервирования адресного пространства и mmap(PROT_READ | PROT_WRITE, MAP_PRIVATE) 
Ioann_
Чот не прогружает:
Ioann_
Александр
а никак - тип Foo::Type нельзя вытащить из Foo, не сделав алиас внутри Foo, имхо
Александр
может только так https://godbolt.org/g/aL5YYd
Александр
так я и говорю - скорее всего вытащить T и Args, заявленные в шалоне шаблона, не получится без дополнительных алиасов
Александр
да
Александр
хз, как заалиасить Args
Berkus
никак, это циклическая зависимость же
Evgenii
так он тебе неизвестен же
Evgenii
знакомо)
Berkus
bintray крутые да
Berkus
ты поко то прилинковал?
Berkus
Clock вроде в pocofoundation
Berkus
кому не надо может не пользоваться же, продолжать писать велосипеды
Berkus
не так круто как сишники
Berkus
а сам конан ты где запускаешь, не в проекте?
Danil
gentoo это хорошо
Pavel
За генту надо следить и обновлять. Не для ленивых.
Pavel
Я пару раз запускал на проектах которые в qtcreator отрываю. Вроде работало
Pavel
Ну, "находило"
Pavel
Не находит на ровном месте != работает же
Berkus
тут вроде всё верно, сплошные ошибки )
Berkus
не шути так
Berkus
собери сам
Pavel
Ну и стандарты у вас, батенька
Berkus
убунту это слово на африкаанс для cannot patch shit
Pavel
Да, отстал я от жизни
Berkus
docker
Pavel
Для шланга есть докер?
Berkus
у меня есть
Berkus
правда я пытался собрать распоследний из гита и докер клауд помре на сборке )
Pavel
Сумасошли https://llvm.org/docs/Docker.html
Berkus
ну а у меня base image это арч - пушо дебиан фуу
Berkus
ну в общем надо собрать и залить куда-нибудь
Constantine
а как в std называется тип, который имеет поле type "сам"
Constantine
типа std::enable_if_t<true, T>
Constantine
(X-Y) это нужно, чтобы один из параметров функции не участвовал в template type deduction
adam
он хочет ω комбинатор имплементировать на крестах с использованием auto и без темплейтов
Constantine
хм... есть identity в experimental и есть identity в реализации MS который имеет type, но не имеет сокращение identity_t и имеет другое назначение
Berkus
он хочет ω комбинатор имплементировать на крестах с использованием auto и без темплейтов
он скайнет пытается написать, но компилятор сегфолтится всё время
adam
Constantine
Хм... работает https://pastebin.com/fQfHNXqK
Nikolay
PVS Studio уже давно
Nikolay
Неплохая вещь
Nikolay
Если большое количество легаси кода переносить с x86 на x64, PVS сильно помогает
Nikolay
У них собственно и анализатор начинался с этой темы, и на сайте статей куча
Nikolay
Они вроде сделали, при условии вставки во все сорцы плашки