
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 элементов, мне туда вставками надо вставлять иногда

Alexen
02.10.2018
18:42:08

Aidar
02.10.2018
18:42:14

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

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

Google

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

Aidar
02.10.2018
18:42:40

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
асм мне показал.

Aidar
02.10.2018
18:51:16

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

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 порядок операций одного ранга гарантирован

Aidar
02.10.2018
19:03:36
Ну и в оператор запятая

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
а просто используешь ...

Vladislav
02.10.2018
19:07:00

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

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

Alexen
02.10.2018
19:09:29
вообще порядок в вариардике не меняется

Aidar
02.10.2018
19:10:47

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
да

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

Alexen
02.10.2018
19:13:11
можешь сходить в стандарт
и порядок для них чётко определён

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