@ProCxx

Страница 1242 из 2477
Дед Пегас
25.08.2017
11:50:57
64 гига хватит.

Операционка и прилажуха поживут в кэшеипооца

Кэше проца*

Google
Ioann V
25.08.2017
12:13:27
Быстрее всего читать mmap :)
Нет. Не всегда и не обязательно.

Я не хочу уходить в дискусс, но в данном случае все зависит от page fault и т.п А на счет того что я не хочу в дискусс, потому что проще всего этот момент погуглить и почитать что к чему - я серьезно, холиваров на эту тему полно.

https://lemire.me/blog/2012/06/26/which-is-fastest-read-fread-ifstream-or-mmap/

Alexander
25.08.2017
12:18:15
template <typename Type, Type ... Args> strcut Foo{};

так можно сделать?

https://lemire.me/blog/2012/06/26/which-is-fastest-read-fread-ifstream-or-mmap/
да, я как-то пару недель назад на это натыкался

Alexander
25.08.2017
12:29:07
Эй, гуру С++, так реально сделать?

template <typename Type, Type ... Args> strcut Foo{};

Berkus
25.08.2017
12:30:36
template <typename Type, Type ... Args> strcut Foo{};
нет, strcut не определен

Pavel
25.08.2017
12:31:45
template <typename Type, Type ... Args> strcut Foo{};
почему не template <auto ... Args>? это же тоже самое

Berkus
25.08.2017
12:32:36
почему не template <auto ... Args>? это же тоже самое
потому что надо один выделенный тип и остальные trailing?

Pavel
25.08.2017
12:33:43
а, нуда. один же тип надо

Google
Alexander
25.08.2017
12:34:24
template <typename Type, Type ... Args> struct Foo{};

я хочу сделать что-то такое: Foo<int,2,3,4,5>

Pavel
25.08.2017
12:36:04
ну, всё же должно работать ровно как ты написал

Tom
25.08.2017
12:37:16
Alexander
25.08.2017
12:37:35
так, окей. Я вижу, что работает. Понимаю, что работает

но у меня не работает.... ладно, пойду дальше копать

Tom
25.08.2017
12:38:15
Alexander
25.08.2017
12:38:30
сейчас, 1 момент. Кое-что проверю

https://godbolt.org/g/NGu7kc

Antony
25.08.2017
12:39:49
https://lemire.me/blog/2012/06/26/which-is-fastest-read-fread-ifstream-or-mmap/
Забавно, у чувака результаты "Conclusion: For sequential access, both fread and ifstream are equally fast. Unbuffered IO (read) is slower, as expected. Memory mapping is not beneficial." А у меня mmap жог и на 10% работал быстрее, вот на таком бенчмарке https://github.com/apolukhin/Boost-Cookbook/blob/second_edition/Chapter11/08_reading_files/main.cpp

Alexander
25.08.2017
12:41:01
да нет, всё ок.

Tom
25.08.2017
12:41:45
https://godbolt.org/g/NGu7kc
Чет телефон мой тупит. Ты с С++17 компилишь?

Потому как иначе class вроде должен быть

Alexander
25.08.2017
12:42:11
Чет телефон мой тупит. Ты с С++17 компилишь?
не-не, я исправил уже ошибку. У меня значит в коде где-то в другом месте проблема

А, у него проц мощнее и данных поменьше! Тогда всё ок
я никак не могу понять, почему mmap должен быть быстрее чем обычное чтение в оперативу

Antony
25.08.2017
12:43:31
Alexander
25.08.2017
12:43:50
Ilia
25.08.2017
12:44:19
Но ЗНАТАКИ говорят — ОНО ЖЕ Ф ЯДРЕ, ОНО КРУТОЕ, ОНО БЫСРТЕЕЕ... почему ?

Google
Alexander
25.08.2017
12:44:45
если замапить кусок и потом с ним работать - да, быстрее. А если просто читать... какие-то неведомые мне вещи начинают работать что ли

Antony
25.08.2017
12:44:56
я никак не могу понять, почему mmap должен быть быстрее чем обычное чтение в оперативу
Чтение через read как правило читает в оперативу а потом копирует в твой буфер Чтение через mmap читает просто в оперативу Экономия на memcpy

Ilia
25.08.2017
12:45:23
Ну, может оно читает большими блоками (не такими уж и), может оно ЛЕНИВО ЗАГРУЖАЕТ СТРАНИЦЫ — согласен. Но вот БЫСТРЕЕ с какого перепугу оно будет — совсем не ясно

Pavel
25.08.2017
12:46:42
вы всё ещё про файлы? https://stackoverflow.com/a/17925143/864782

Ilia
25.08.2017
12:46:46
скорость чтения с диска — десятки микросекунд, памяти — нано.

Matwey
25.08.2017
12:47:48
Это — экономия на спичках.
Ну это от платформы зависит

Ilia
25.08.2017
12:48:14
Ну да, если там не SSD стоит, а ленточный накопитель, то ДАААА!

Дед Пегас
25.08.2017
12:48:40
скорость чтения с диска — десятки микросекунд, памяти — нано.
Зависит от системы. Игоры критичны на чтение с лиска, например

Berkus
25.08.2017
12:51:31
mmap дает выигрыш при random seek read; при последовательном - выгода не должна быть большой

даже если использовать его с madvise все равно паттерн чтения такой же линейный, так что большую часть времени ты читаешь со скоростью memcpy

Antony
25.08.2017
12:53:24
вы всё ещё про файлы? https://stackoverflow.com/a/17925143/864782
я упорный: если использовать MAP_HUGETLB для mmap, то будет чуть быстрее чем последний вариант :)

Это — экономия на спичках.
Это незаметно ускоряет, если происходит чтение страницы с диска, и ощутимо ускоряет, если работаете с уже подгруженной в оперативу страницей (например если этот файл кто-то недавно читал/писал)

reagentoo
25.08.2017
13:01:15
почему как только я делаю std::experimental::filesystem::path p = "/some/path" пишет ошибка: undefined reference to `std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts()' ?

reagentoo
25.08.2017
13:01:38
Alexander
25.08.2017
13:02:00
https://stackoverflow.com/questions/33149878/experimentalfilesystem-linker-error

Google
reagentoo
25.08.2017
13:02:48
это только для experimental или всегда так будет?

Antony
25.08.2017
13:05:41
я упорный: если использовать MAP_HUGETLB для mmap, то будет чуть быстрее чем последний вариант :)
Современные Линуха это делают автоматически. Нужно поэкспериментировать с MAP_POPULATE и перемерить на новых ядрах...

при чтении через read() ОС точно так же пойдет в кеш, разве нет?
Да, но из кеша ОС скопирует в пользовательских буфер, тоесть вызовет memcpy

Pavel
25.08.2017
13:16:55
как эти hugetlb включить то по нормальному?

Alexander
25.08.2017
13:17:54
а что значит по-нормальному?

Pavel
25.08.2017
13:18:09
ну у меня тут инвалиды аргументы

hugetlbfs надо монтировать?

или это просто в ядре должно быть включено?

Admin
ERROR: S client not available

Alexander
25.08.2017
13:18:49
в ядре

Pavel
25.08.2017
13:19:05
включено. дефолтное арчевое

в nr_hugepages надо писать?

MAP_POPULATE в два раза быстрее того варианта что с posix_fadvise на SO

надо проверить на большом кол-ве файлов. у меня как раз утилита для этого есть

Ilia
25.08.2017
13:25:34
Да, но из кеша ОС скопирует в пользовательских буфер, тоесть вызовет memcpy
Вообще-то и просто память смапировать можно. Ну так, чисто теоретицки... А скопировать только свисающие часть по краям границ страниц.

Ilia
25.08.2017
13:26:36
Ну тогда вообще не понятно, в чём экономия.

Antony
25.08.2017
13:46:07
Вообще-то и просто память смапировать можно. Ну так, чисто теоретицки... А скопировать только свисающие часть по краям границ страниц.
Можно, но для этого надо иметь куски памяти (в которые вы читаете), выровненные по размеру страницы. Это оч редко когда случается

Google
Ilia
25.08.2017
13:46:56
Я ж говорю, что свисает — скопировать

Если маленькое будет — что так, что так, экономии нет. Если большое — большую часть перемапить, остальное скопировать. Тоже нет экономии. Ну это всё равно фантазии...Надо код ядра линука смотреть...

Антон
25.08.2017
13:49:36
как при помощи CMake собрать инструмент, который использует библиотеку, у которой есть файл, который генерируется этим инструментом

Антон
25.08.2017
13:49:59
но в этом инструменте этот файл не используется

почти circular dependencies

Alexander
25.08.2017
13:50:26
а как же ты этот файл использовать хочешь?

ЯННП

Антон
25.08.2017
13:51:33
смотрите, есть asc.exe

он генерирует cpp файл

Alexander
25.08.2017
13:52:14
окей

Антон
25.08.2017
13:52:18
который линкуется с библиотекой

Alexander
25.08.2017
13:52:22
ок

Антон
25.08.2017
13:52:26
которую использует asc.exe

Alexander
25.08.2017
13:52:44
имя тебе известно этого генерируемого файла?

Антон
25.08.2017
13:52:45
но этот функционал этой библиотеки asc.exe не использует

Alexander
25.08.2017
13:52:54
теперь понял

тогда в чём проблема его прилинковать этот сгенерированный файл?

или тебе нужно запускать генерацию во время работы cmake?

Alexander
25.08.2017
13:53:35
ага, вот теперь понял

Антон
25.08.2017
13:53:50
как собрать библиотеку без него, а потом с ним

Страница 1242 из 2477