
Square
22.08.2017
10:56:01
ммм, кстати седня столкнулся с дичью оптимизации в студии, и мне ВПЕРВЫЕ за 7 лет пригодилось volatile.
вызывал с++ либу из .net и если либа была с о2 сбилжена - код падал после выхода из тела одного маленького цикла в три строки
млин. хотел не тут поделиться

Stanislav
22.08.2017
10:59:59
http://ericniebler.com/2017/08/17/ranges-coroutines-and-react-early-musings-on-the-future-of-async-in-c/
https://clearlinux.org/blogs/gcc-7-importance-cutting-edge-compiler

Google

Vitaliy
22.08.2017
11:13:57
Всем привет. Начал сегодня освежать такую тему как виртуальные функции. Добрался до сайта cppreference и то ли я торможу, то ли у меня с английским плохо, но не могу понять последний пример на этой странице http://en.cppreference.com/w/cpp/language/virtual
Там классический пример ромбовидного наследования, но ещё и с виртуальными функциями. Непонятно когд и какая вызывается и почему.

Evgeniy
22.08.2017
11:14:59

Arseny
22.08.2017
11:16:33

Square
22.08.2017
11:17:47
цикл простейший, по вектору преаллоцированному
1000 итераций, задано константой было
и падало ток когда из .net вызывалось =\

Ivan
22.08.2017
11:26:51
Такой вопрос: Кто какое IDE юзает на macOS?

Stanislav
22.08.2017
11:29:04

Ivan
22.08.2017
11:29:22
Благодарю

Vitaliy
22.08.2017
11:30:31
#supapro
Всё-таки свой вопрос не считаю вопросом для новичков ) Но если он показался таким лёгким, то ок.

Nik
22.08.2017
11:37:39

Google

Gegham
22.08.2017
11:49:58
подскажите с какой книги начинать изучать c++

Владислав
22.08.2017
11:51:17

Gegham
22.08.2017
11:52:23

Berkus
22.08.2017
13:34:28
а читать ты не умеешь да?

Екатерина
22.08.2017
13:44:37

Matwey
22.08.2017
13:46:48
ну чо такой злой то?

Antony
22.08.2017
13:48:12

Екатерина
22.08.2017
13:48:57

Stanislav
22.08.2017
13:49:22
но да, тут и по Си

Berkus
22.08.2017
13:51:27
тут по си да, по вакансиям на си в другое место - в описании чата написано куда

Екатерина
22.08.2017
13:52:04

Berkus
22.08.2017
13:55:31
ура

Stanislav
22.08.2017
15:40:09
https://stackoverflow.com/questions/40354978/why-is-this-c-code-faster-than-my-hand-written-assembly-for-testing-the-collat
для любителей асма

Evgeniy
22.08.2017
15:41:41
на 2

Александр
22.08.2017
15:42:26
каеф

Vladislav
22.08.2017
15:42:27
Кек

Stanislav
22.08.2017
15:44:12
особенно последние строчки доставили
My system: 64 bit Linux on 1.4 GHz Intel Celeron 2955U (Haswell microarchitecture).
g++ (unoptimized): avg 1272 ms
g++ -O3 avg 578 ms
original asm (div) avg 2650 ms
Asm (shr) avg 679 ms
@johnfound asm, assembled with nasm avg 501 ms
@hidefromkgb asm avg 200 ms
@hidefromkgb asm optimized by @Peter Cordes avg 145 ms
@Veedrac C++ avg 81 ms with -O3, 305ms with -O0

Google

Stanislav
22.08.2017
15:44:46
гцц всех победил в итоге

Vladislav
22.08.2017
15:44:58
Совершенно не удивлен

Stanislav
22.08.2017
15:45:06
а вот автор удивлен
был

Berkus
22.08.2017
15:45:33
был
но продолжал делить 64 битным дивом

Stanislav
22.08.2017
15:46:34
2016 делили как могли

Evgeniy
22.08.2017
15:48:08

Ioann V
22.08.2017
16:17:39
Так видно же, что Asm код ламерский
Совершенно не удивлен
а вот автор удивлен
был
Там ниже, даже указали на это и поправили. Обогнав С++ в 2.5 раза

Berkus
22.08.2017
16:18:54
меньше 80мс сделали? где
дай ссылку

Ioann V
22.08.2017
16:20:52
Когда Асм попадает в руки к новичку - то это беда, да. Но если попадет к профи, то вероятность ускорить все к чертям собачьим - более чем 99 процентов. И те кто говорят, мол на асме писать код долго - ничего подобного, люди которые этим занимаются, не только могут делать это быстро, но могут делать это быстро и с вашим С++ кодом, который некоторые из них могу дизасемблить в уме
дай ссылку
Комментарий с рейтингом 78 разве не о том ?

Evgeniy
22.08.2017
16:22:39
там в самом вопросе рейтинг результатов
в итоге плюсы победили

Admin
ERROR: S client not available

Google

Ioann V
22.08.2017
16:24:29
А, вижу ретинг. На счет ниже 80 мс тогда я не прав, ну я и не это утвержадал. А то что код автора ускорили - то вот это я утверждал.
Но тот что работает 80мс, быстрее потому, что он алгоритмически по другому записан

Mikhail
22.08.2017
16:25:50
Когда Асм попадает в руки к новичку - то это беда, да. Но если попадет к профи, то вероятность ускорить все к чертям собачьим - более чем 99 процентов. И те кто говорят, мол на асме писать код долго - ничего подобного, люди которые этим занимаются, не только могут делать это быстро, но могут делать это быстро и с вашим С++ кодом, который некоторые из них могу дизасемблить в уме
ну ерунда же.. для кода меньше 100 строчек я еще соглашусь. но разработать, сопровождать, модернизировать проект от 100к строк, почти анриал без ООП.


Ioann V
22.08.2017
16:26:12
Так обычно так и делается, ну только 100 все же маловато как то
Там разные фичи есть - например при вычисленинии производных и вообще самого nurbs используется, и это работает не просто быстро ... ну в общем не суть - такие заявления ведут к пруфам и т.п, мне лень их предоставлять
Но есть другие пруфы
https://pugixml.org/benchmark.html
Смотретие на ASM версию, она вроде как не включает intrinsic
//Но PugiXml это если что С, в чистом виде, без использования Stl, и со своими контейнерами

Mikhail
22.08.2017
16:32:48
Смотретие на ASM версию, она вроде как не включает intrinsic
ну тут пожалуй весь разговор сведется к тому, что вещи, которые необходимо оптимизировать ты переписываешь на более низкоуровневом языке..
к примеру следующий кейс:
1. Ты один раз при старте распарсил пару троек xml. Оптимизация тут тебе съекономит пару сотен мс в лучшем случае.
2. Ты что-то парсишь постоянно в рантайме. Очевидно, тут тебе стоит задуматься об оптимизации, кешировании и т.д.

Evgeniy
22.08.2017
16:33:47
бывает и наоборот

Mikhail
22.08.2017
16:34:10
я обычно прогоняю все через perf, потом загоняю все в флеймграф (если есть возможность). ну а дальше смотрю в чем проблемы.
и где просадка по производительности
а херня типа "все в асм" реально трудно применима

Stanislav
22.08.2017
16:38:02

Evgeniy
22.08.2017
16:39:20
просто это бесмысленно

Ioann V
22.08.2017
16:52:48
Компилятор - написан людьми. Можно взять в пример Intel. Он хорошо векторизует код, лучше всего что есть на рынке, но тоже не идеально. Но, они не стремаются в своих библах типа МПИ и другие - использовать чистый АСМ. Вот у Вижл Студио раньше и референс код плохо оптимизировался, но проблема у них не в этом, а в том что в 64 битной сборке app нельзя использовать asm вставки. Такое только у них, увы.
Так то я не призываю писать вас на АСМ-е и т.п. Люди которые на нем пишут в проекте - знают когда, зачем и как его использовать. Это целый research я бы сказал. Но ускорить можно и не хило.

Google

Ioann V
22.08.2017
16:56:36
Ну и вдовесок о оптимизации, тут недавно читал диссертацию одного чувака с Мск по оптимизации Российского Геометрического Ядра. Так вот, он там много всего вычисляет и т.п, под конец сравнивает РГЯ с открытыми!!!! библами типа openCascade и т.п, ну и еще кие то платные использует. Так вот это самое РГЯ - это C3D, написаное в Асконе, и учитывая что это Ядро - написанное явно не теми кто за 80 - 90к пер монс в офисе обитает. Но вот по резульаттам оказалось что оно, ядро, медленнее в 8 раз того что есть в свободном доступе.


Mikhail
22.08.2017
17:01:33
да нет, огромные куски кода можно соптимизировать на асме
эээх... можно все соптимизировать, в конце концов.
это можно назвать "ценой абстрации". например у тебя есть std::string а в сях char*.
в одном случае ты получаешь более-менее завершенный тип данных с кучей операций, во втором, только указатель на виртуальный адрес в ОЗУ в котором находятся ничего не значащий тип char который в свою очередь всего-навсего есть несколько u8 (может и u16 u32) следующих друг за другом, и по договоренности заканчивающийся числом 0x00 (или соответсвенно 0x0000, 0x00000000). ну и парочкой примитивных операций для работы с ними. этот указатель может ссылаться на данные в любой из памяти (автоматической, статической, динамической).
И тут вознизает вопрос. С каким типом удобнее пользоватся? Работа с каким из них безопаснее? Какой тип быстрее, при эквивалентых задачах? И какой из них переносимее?
Короче тут палка на двух концая: АБСТРАКЦИЯ или СКОРОСТЬ РАБОТЫ (алгоритмическую часть опустим).


Ioann V
22.08.2017
17:04:14
Ну вот, я про то и говорю - тут многие, скорее всего не занимаются тем, что им нужно постоянно производить вычисления и т.п - параллельно делать еще что то и так далее, что грузит ваш компьютер на все 100%. Поэтому, думаю, что многие на меня смотрят с оскалом. Но, все же призываю разделять точки зрения, я ведь не навязываю, а лишь обосновываю !

Mikhail
22.08.2017
17:08:04
Ну вот, я про то и говорю - тут многие, скорее всего не занимаются тем, что им нужно постоянно производить вычисления и т.п - параллельно делать еще что то и так далее, что грузит ваш компьютер на все 100%. Поэтому, думаю, что многие на меня смотрят с оскалом. Но, все же призываю разделять точки зрения, я ведь не навязываю, а лишь обосновываю !
да, согласен и такие задачи есть.. как правило в таких низкоуровневых вещах либо довольно медленная скорость разработки, либо очень много программистов.

Ioann V
22.08.2017
17:10:25
Кстати, вот это вот - 'частая' ложь
https://www.viva64.com/ru/k/0003/
Может быть в Асм инструкциях и т.п оно будет быстрее, но вот если брать кеш процессора, то нет