@ProCxx

Страница 2400 из 2477
Aidar
02.10.2018
18:08:44
Компилятор не тупой, про конкаренси есть мемори модел

Aleksandr
02.10.2018
18:26:53
привет. не совсем по теме чата вопрос, но всё же кто-нибудь в курсе как правильно закрывать баги на bugs.llvm.org? Апдейтов в моём кейсе не было, в 6.0.1 воспроизводилось, в 7.0.0 всё ок. или мне ничего делать не надо и парни сами разберутся?

не хочется просто чтобы вдруг тратили на кейс время, который уже и не кейс

Ignat
02.10.2018
18:28:17
казалось бы, разумно оставить коммент о том, что в 7 всё ок, и сменить статус на RESOLVED

Google
Aleksandr
02.10.2018
18:34:15
там resolved с вариантами - fixed, duplicate, invalid и пр. я не в курсе, какие у них там правила. на моей работе, например, нельзя резолвить в fixed если в кейс не было коммитов. ладно, зарезолвлю как fixed

Zorro
02.10.2018
18:37:50
Еще не юзай ни массивы ни меммув ни прочие сишные структуры
double *arr = (double *)malloc(sizeof(double) * 1000); for(long i=0; i<100000000; i++) { //memmove(arr+1, arr+0, 100); std::move(arr, arr +100, arr + 1); } memmove: real 0m0.806s user 0m0.788s std::move: real 0m2.108s user 0m2.087s 1) гипотеза не подтвердилась 2) хипстеры снова все поломали

Aidar
02.10.2018
18:38:18
copy

Zorro
02.10.2018
18:38:32
overlapping

наверное надо попроьбовать backwards

Aidar
02.10.2018
18:39:17
Тогда shift

ты изобретаешь vector::erase чтоле

Zorro
02.10.2018
18:40:53
for(long i=0; i<100000000; i++) { //memmove(arr+1, arr+0, 100); //std::move(arr, arr +100, arr + 1); std::copy_backward(arr, arr +100, arr + 101); } real 0m2.117s user 0m2.095s еще и заставляют меня считать конечный элемент destination, ну что у них было в голове, а?

у меня массив из 3-8 элементов, мне туда вставками надо вставлять иногда

Zorro
02.10.2018
18:42:21
меня не колышет что там в массиве для теста

Aidar
02.10.2018
18:42:31
Покажи параметры своего компилятора

Google
Alexen
02.10.2018
18:42:34
а вот систему колышит

Zorro
02.10.2018
18:42:41
cc -O3 test.cc

айдар: обоснуй лол

Aidar
02.10.2018
18:43:12
айдар: обоснуй лол
Доступ к неинициализированной памяти это уб

Alexen
02.10.2018
18:43:54
и есть ли та память или нет её, а также общее поведение это ещё больший уб

Zorro
02.10.2018
18:43:58
у меня платформа интел x64 only, я в ней уверен.

Alexen
02.10.2018
18:44:10
иии?

Zorro
02.10.2018
18:44:14
мне кажется дискуссия от существа уходит в сторону

Alexen
02.10.2018
18:44:32
дискуссия про то что тесты надо готовить уметь

Aidar
02.10.2018
18:44:50
А cc у тебя, прости , что есть такое?

Zorro
02.10.2018
18:45:18
мой пойнт был что у нас есть шустрее чем memmove, оказалось в плюсах тоже нет. Вы не подумайте, я не гнать на плюсы пришел, я пришел спросить что посоветуют, и проверил. Я не виноват, что так получилось, я плюсы сам люблю, только старые, 96 года, у меня промежуток был.

это gcc

Aidar
02.10.2018
18:45:55
Ты ваще чтото сделал с массивом?

Кроме цикла

Zorro
02.10.2018
18:46:18
нет, я меряю накладные расходы на вход и выход в memmove/std::copy

Aidar
02.10.2018
18:46:38
Проверь дизассемблер пожалуста

Zorro
02.10.2018
18:46:52
ви таки хотите ето посмотреть?

щас сделаем

Aidar
02.10.2018
18:47:17
godbolt.org

Google
Aidar
02.10.2018
18:47:23
Просто вставь

Alexen
02.10.2018
18:47:42
я вот проверил и у меня в обоих случаях вызов memmove

Aidar
02.10.2018
18:48:28
Я почти уверен что в первом случае он просто выбросил вызов

Потомучто результат не используетс

Alexen
02.10.2018
18:49:29
@AsGreyWolf а вот для работы с объектами у гцц есть просадок по сравнению со шланогом для перемещения-копирования, демки под рукой нет, но результат там видим невооружённым глазом

Aidar
02.10.2018
18:49:47
Что есть объекты?

Alexen
02.10.2018
18:49:55
обыкновенные POD для 14 стандарта

Aidar
02.10.2018
18:50:23
Я знаю что шланг умеет оптимизировать маллоки если они не нужны

На этом его преимущества заканчиваются

Гцц оптимизирует лучше все остальное

Zorro
02.10.2018
18:50:51
блин, да, я ступил.

Alexen
02.10.2018
18:50:56
там не в маллоках дело, там просто почему-то скорость копирования очень просадила

Zorro
02.10.2018
18:50:57
асм мне показал.

Zorro
02.10.2018
18:51:19
хипстеры не поломали, а лоханулся - я

Aidar
02.10.2018
18:51:33
Zorro
02.10.2018
18:51:42
размер в memmove указал не умножив

Alexen
02.10.2018
18:51:54
Че значит скорость копирования
количество объектов за единицу времени

Aidar
02.10.2018
18:52:18
количество объектов за единицу времени
Ну короче не верю, если это так надо багрепортить

Тут были тесты оптимизаций компиляторов кому интересно могу поискать

Google
Alexen
02.10.2018
18:53:34
Ну короче не верю, если это так надо багрепортить
да просто один из ментейнеров раста скинул демку, я ему тоже на слово не поверил, пока у себя не запустил, завтра ещё раз пересмотрю и как только PoC получу тебе скину

Zorro
02.10.2018
18:56:24
карочи, GCC у меня мой цикл написанный руками превратил в вызов memmove.

я поменял параметр, пойнтер, и у меммува в asm code там тоже поменялся.

не даром хлеб едят, одобряю

Egor
02.10.2018
18:58:11
template <std::size_t... I> auto strings2tuple(const Strings &s, std::index_sequence<I...>) { return std::make_tuple(from_string<>(s, I)...); } развёртывание from_string()... гарантированно исполняется слева направо или нет?

Alexen
02.10.2018
19:00:32
стандарт?

Egor
02.10.2018
19:02:15
про.схх

да вроде не гарантируется, уточняю

Admin
ERROR: S client not available

Alexen
02.10.2018
19:03:01
если не С++17 то гарантий нет

Egor
02.10.2018
19:03:08
17

Alexen
02.10.2018
19:03:32
для 17 порядок операций одного ранга гарантирован

Egor
02.10.2018
19:03:47
да, initializer_list я тоже видел

int dummy[sizeof...(Ts)] = { (std::cout << args, 0)... };

тут будет слева направо

Aidar
02.10.2018
19:04:27
Да вроде

Зачем массив?

Egor
02.10.2018
19:05:27
копипаста просто

Google
Alexen
02.10.2018
19:05:48
для 17го так нет нужды

Egor
02.10.2018
19:06:09
как?

Alexen
02.10.2018
19:06:57
а просто используешь ...

Alexen
02.10.2018
19:07:26
(std::cout << ... << args);

Egor
02.10.2018
19:08:27
у меня изначально задача - развернуть вариадик со стейтом (поэтому только слева направо) и передать в качестве аргументов это

Aidar
02.10.2018
19:10:47
(std::cout << ... << args);
А че до 17 нельзя?

Alexen
02.10.2018
19:11:00
дожили

Aidar
02.10.2018
19:11:01
Я думал в 17 добавили только с присваиванием

Alexen
02.10.2018
19:11:29
я забыл как это называется на английском, но это именно фишка 17го стандарта

Egor
02.10.2018
19:11:30
А почему слева на право?
состояние меняется, последующие вызовы зависят от предыдущих

Alexen
02.10.2018
19:12:03
состояние меняется, последующие вызовы зависят от предыдущих
тогда делай враппер который явно раскрывает вариардик слева на право

Aidar
02.10.2018
19:12:10
Fold expressions?

Alexen
02.10.2018
19:12:18
да

Fold expressions?
https://en.cppreference.com/w/cpp/language/fold

Aidar
02.10.2018
19:12:58
Мало ли че там написано

Alexen
02.10.2018
19:13:11
можешь сходить в стандарт

и порядок для них чётко определён

Aidar
02.10.2018
19:13:29
Хм хотя мб я юзаю 1z всю жизнь и не замечаю

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