Re[21]: Что такое Modern C++ Style?
От: MTD https://github.com/mtrempoltsev
Дата: 19.02.18 07:48
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Это всё конечно замечательно, но ты всё же попробуй сделать, то, что я сказал. )))


Мне интересно понять почему. Ты можешь помочь?
Re[19]: Что такое Modern C++ Style?
От: MTD https://github.com/mtrempoltsev
Дата: 19.02.18 07:49
Оценка:
Здравствуйте, Nikе, Вы писали:

N>Мой (единственное изменение кода — добавил std::sin.get() в конце):


Открой для себя ctrl+f5
Re[28]: Что такое Modern C++ Style?
От: Nikе Россия  
Дата: 19.02.18 07:50
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>>>У тебя выключена Whole program optimization (/GL). Что любопытно, если ее выключить std::vector работает быстрее чуть ли не вдвое (к вопросу об stl в time critical ), поведение велосипеда не меняется. Впрочем отрыв велосипеда все равно есть, процентов 15.

N>>Цифры против, я их привёл.

MTD>Это неправда. Я проверил на той же оси, компиляторе и настройках, только процессор i5, а не i7.


Пойми простую вещь: цифры важнее твоих хотелок и комплексов. Вот они показывают, что ты облажался. Это факт. Твоё упорство — делает хуже тебе, а не им.

N>>Я уже говорил, что в подобных оптимизациях, по мимо их адской прямой и отложенной дороговизны — очень сильно влияние оползней на Луне.


MTD>Это потому, что ты процессов не понимаешь, поэтому для тебя это магия.


Да-да, тебе цифры показывают, что твой косой тест показывает рандомные результаты, но для меня это магия, ага.

N>>Ты ляпнул провокационное заявление, противоречащее архитектуре проца и всем основным бенчмаркам, тестам и практике. Никак его не обосновал -> гонишь.


MTD>Я тебе предложил подтвердить свои слова, а заодно подучить тебя, но разумеется не бесплатно — ты моментально слился.


Нужно разобрать угил.
Re[22]: Что такое Modern C++ Style?
От: alex_public  
Дата: 19.02.18 07:53
Оценка:
Здравствуйте, MTD, Вы писали:

N>>Оо, да. Давай, докажи, что не болтун, покажи 10х прирост Впрочем ты просто зарвался и начал тупо гнать.

MTD>Пока, что болтуном показал себя ты. Насчет на порядок я написал для красоты, но 8х — вполне. С тобой могу заключить пари, тысяч на 50 рублей, например. После этого покажу код с SSE делающий код без SSE на озвученную мной величину.

В 8х тоже не получится, потому как хотя сами операции будут выполняться реально в 8 раз быстрее, но подготовка процессора к ним будет существенно дольше, чем у не SIMD варианта. Так что реально говорить об ускорение в 6-7 раз максимум.
Re[20]: Что такое Modern C++ Style?
От: Nikе Россия  
Дата: 19.02.18 07:53
Оценка:
Здравствуйте, MTD, Вы писали:

N>>Мой (единственное изменение кода — добавил std::sin.get() в конце):


MTD>Открой для себя ctrl+f5


На, держи:

std::vector
797876 us
Vector<T>
1066304 us
-939524096
Для продолжения нажмите любую клавишу . . .

Нужно разобрать угил.
Re[23]: Что такое Modern C++ Style?
От: alex_public  
Дата: 19.02.18 07:59
Оценка:
Здравствуйте, Nikе, Вы писали:

MTD>>Пока, что болтуном показал себя ты. Насчет на порядок я написал для красоты, но 8х — вполне. С тобой могу заключить пари, тысяч на 50 рублей, например. После этого покажу код с SSE делающий код без SSE на озвученную мной величину.

N>Я на этот бред не подписываюсь. Ставлю на то, что ты либо невнимательно прочёл о чём идёт речь и думаешь о старших версиях SSE, которые служат для других задач, либо имеешь в виду какой-нибудь экзотичный изврат — хотя думаю, что верно первое.

Ну это ты уже что-то не то пишешь. AVX — это самый обычный SIMD, применяющийся ровно для тех же целей, что и самый первый древний MMX.
Re[23]: Что такое Modern C++ Style?
От: Nikе Россия  
Дата: 19.02.18 08:05
Оценка:
Здравствуйте, alex_public, Вы писали:

_>В 8х тоже не получится, потому как хотя сами операции будут выполняться реально в 8 раз быстрее, но подготовка процессора к ним будет существенно дольше, чем у не SIMD варианта. Так что реально говорить об ускорение в 6-7 раз максимум.


Да с чего в 8 то? В одном регистре SSE помещается 4 флоата. С чего это операции с ними должны быть в 8 раз быстрее?
Нужно разобрать угил.
Re[24]: Что такое Modern C++ Style?
От: Nikе Россия  
Дата: 19.02.18 08:09
Оценка:
Здравствуйте, alex_public, Вы писали:

N>>Я на этот бред не подписываюсь. Ставлю на то, что ты либо невнимательно прочёл о чём идёт речь и думаешь о старших версиях SSE, которые служат для других задач, либо имеешь в виду какой-нибудь экзотичный изврат — хотя думаю, что верно первое.


_>Ну это ты уже что-то не то пишешь. AVX — это самый обычный SIMD, применяющийся ровно для тех же целей, что и самый первый древний MMX.


Так я писал про первую версию расширения SSE. Сейчас-то понятно, что много всякого появилось — сам активно Cuda и OpenCL использую, но речь то шла про конкретный забавный опыт.
Нужно разобрать угил.
Re[24]: Что такое Modern C++ Style?
От: alex_public  
Дата: 19.02.18 08:15
Оценка:
Здравствуйте, Nikе, Вы писали:

_>>В 8х тоже не получится, потому как хотя сами операции будут выполняться реально в 8 раз быстрее, но подготовка процессора к ним будет существенно дольше, чем у не SIMD варианта. Так что реально говорить об ускорение в 6-7 раз максимум.

N>Да с чего в 8 то? В одном регистре SSE помещается 4 флоата. С чего это операции с ними должны быть в 8 раз быстрее?

Восемь float/int32 там помещается в наше время. А в этом году выходит пользовательский (специализированные уже несколько лет продаются) процессор в котором их будет 16 помещаться. )))
Re[25]: Что такое Modern C++ Style?
От: Nikе Россия  
Дата: 19.02.18 08:27
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Восемь float/int32 там помещается в наше время. А в этом году выходит пользовательский (специализированные уже несколько лет продаются) процессор в котором их будет 16 помещаться. )))


Спасибо Кэп! Я специально для MTD акцентировал внимание на том, что это просто SSE (старый).
Нужно разобрать угил.
Re[12]: Что такое Modern C++ Style?
От: vopl Россия  
Дата: 19.02.18 09:07
Оценка: +3
Здравствуйте, MTD, Вы писали:

MTD>>>использование STL зачастую напрочь убивает перформанс.

MTD>Небольшой ликбез:
MTD>[ccode]
MTD>...
MTD>[/code]

Позволю себе подвести краткие итоги по результатам обсуждения представленного ликбеза:
1. на некоторых платформах MTD::Vector немного обгоняет std::vector
2. на некоторых платформах std::vector немного обгоняет MTD::Vector
3. на некоторых платформах std::vector работает с такой же скоростью что и MTD::Vector
4. разница скорости работы этих двух вариантов примерно сопоставима с величиной погрешности замеров

Итого: нужен более качественный ликбез, этот не подходит, он не показывает напрочь убитый перформанс.

MTD>Из личной практики могу рассказать множество историй, как STL тормозит на ровном месте, но как нибудь отдельно. Сам сначала пишу с использованием стандартной библиотеки, в большинстве случаев — это ок, но осторожным надо быть всегда, бывают адские провалы порядка в 20 раз на отдельной платформе.


Покажи адский провал в 20 раз плз?
Re[20]: Что такое Modern C++ Style?
От: alex_public  
Дата: 19.02.18 09:07
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>Почему не нужен? А может как раз нужен. Гипотетически — есть код написанный с вектором, алгоритмически все оптимизировали, надо выжать еще процентов 20. Меняем вектор на свой — профит.


Хм, вопрос исправления уже написанной и при этом изначально кривой (не потому что быстродействие, а потому что vector тут банально менее удобен) архитектуры — это отдельный тяжёлый вопрос в программирования. Я его не рассматривал. А так да, теоретически это возможно.

MTD>>>Конечно нет. На маке ничего не изменилось, на вин10 произошли чудеса и разрыв между велосипедом и вектором усилился , на линуксе отставание вектора составило ~15%.

_>>Ну а теперь смотри на реальность:
MTD>Я уже посмотрел.

Куда-то не туда смотрел.

Ты увидел, что поставленный в одинаковые условия твой код и std::vector выдают одинаковые результаты с точностью до второго порядка после запятой? )

А так же увидел ли, что если всё же ограничиваться условием именно твоей задачи, то наиболее оптимальным решением будет использование "make_unique<T[]>(n)" (то же кстати часть стандартной библиотеки языка) вместо всех этих векторов? )

_>>500028 us //std::vector с clear()

_>>415023 us //std::vector с resize(0)
MTD>Можешь объяснить разницу? Давай без подколок, реально интересно.

Надо смотреть какой там ассемблер генерируется. Я настолько глубоко в твой примерчик не погружался. )))
Re[25]: Что такое Modern C++ Style?
От: alex_public  
Дата: 19.02.18 09:15
Оценка:
Здравствуйте, Nikе, Вы писали:

_>>Ну это ты уже что-то не то пишешь. AVX — это самый обычный SIMD, применяющийся ровно для тех же целей, что и самый первый древний MMX.

N>Так я писал про первую версию расширения SSE. Сейчас-то понятно, что много всякого появилось — сам активно Cuda и OpenCL использую, но речь то шла про конкретный забавный опыт.

А, значит я не так понял (MTD же писал про 8 раз — это очевидно AVX имелся в виду). Если говорить про старый SSE, то там и в 3 раза не всегда вытягивалось...
Re[26]: Что такое Modern C++ Style?
От: Nikе Россия  
Дата: 19.02.18 09:30
Оценка:
Здравствуйте, alex_public, Вы писали:

_>А, значит я не так понял (MTD же писал про 8 раз — это очевидно AVX имелся в виду).

Но он утверждал, цитирую:

и что такое SSE представляешь смутно.

На что ему была дана рекомендация:

Ставлю на то, что ты либо невнимательно прочёл о чём идёт речь и думаешь о старших версиях SSE


Но он не унялся
Нужно разобрать угил.
Re[4]: Что такое Modern C++ Style?
От: rean  
Дата: 19.02.18 12:45
Оценка: +1
deleted
Отредактировано 22.04.2019 9:22 deleted2 . Предыдущая версия .
Re[5]: Что такое Modern C++ Style?
От: alex_public  
Дата: 19.02.18 13:13
Оценка: +1
Здравствуйте, rean, Вы писали:

S>>
S>>vector<int>::iterator it = v.begin();
S>>auto it = v.begin();
S>>

R>Напишите это в реальном коде, где вектор где-то на полстраницы выше итератора. И уже надо смотреть наверх и искать, к чему относится этот итератор.

А вот как раз для этих целей программисты на C++ и предпочитают использовать IDE (а не какие-то простенькие редакторы с подсветкой синтаксиса).
Re[6]: Что такое Modern C++ Style?
От: rean  
Дата: 19.02.18 13:47
Оценка:
deleted
Отредактировано 22.04.2019 9:22 deleted2 . Предыдущая версия .
Re[7]: Что такое Modern C++ Style?
От: alex_public  
Дата: 19.02.18 14:43
Оценка: -1
Здравствуйте, rean, Вы писали:

S>>>>
S>>>>vector<int>::iterator it = v.begin();
S>>>>auto it = v.begin();
S>>>>

R>>>Напишите это в реальном коде, где вектор где-то на полстраницы выше итератора. И уже надо смотреть наверх и искать, к чему относится этот итератор.
_>>А вот как раз для этих целей программисты на C++ и предпочитают использовать IDE (а не какие-то простенькие редакторы с подсветкой синтаксиса).
R>Я предпочитаю использовать IDE, чтобы упростить перемещение по коду, а не для того, чтобы сгладить проблемы с auto.

Так при использование IDE никаких проблем и нет — наводим курсор на нашу переменную (v в данном примере) и прекрасно видим её тип.

R>auto от меня скрывает типы и заставляет держать в памяти то, что можно было видеть глазками. Считайте, что огромный кусок моей памяти занят бессмысленными данными. Т.е. я по сути глупее с auto.


Информация в подсказке IDE не считается "видимой глазками" или как? )
Re[8]: Что такое Modern C++ Style?
От: rean  
Дата: 19.02.18 14:48
Оценка: +1
deleted
Отредактировано 22.04.2019 9:22 deleted2 . Предыдущая версия .
Re[13]: Что такое Modern C++ Style?
От: Максим Рогожин Россия  
Дата: 19.02.18 14:57
Оценка:
Здравствуйте, Nikе, Вы писали:

N>В STL много до чего можно докопаться — банально их шаредпоинтеры действительно не годятся там, где идёт борьба за ресурсы.

А чьи годятся? И из-за чего не годятся? Из-за того что sizeof shared_ptr<T> > sizeof void*?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.