@ProCxx

Страница 1575 из 2477
Igor
15.12.2017
08:54:26
рыр( auto it = flag ? cont.find(x) : cont.begin(); for ( ; it != cont.end(); ++it) { do_stuff(*it); if (flag) return; } сильно хрень?

была мысль выкинуть ретурн и сделать begin, end = flag ? (find(), find()+1) : (begin(), end()) но понял что влечу в уб, да и как-то читаемость не повышается

Anatoly
15.12.2017
08:58:37
рыр( auto it = flag ? cont.find(x) : cont.begin(); for ( ; it != cont.end(); ++it) { do_stuff(*it); if (flag) return; } сильно хрень?
рассмотри вариант: if( flag ) { auto it = std::find(std::begin(cont), std::end(cont), x); if( it != std::end(cont) ) do_stuff(*it); } else { std::for_each(std::begin(cont), std::end(cont), do_stuff); } такой код сопровождать проще, поскольку условие с флагом локализовано в одном месте, а не разбросано в коде

Google
Azoyan
15.12.2017
09:05:59
Я хоть и не люблю тернарники, но вариант с тернарником лучше. Там один раз вызывается do_stuff, и вообще он короче. Одно не понимаю, зачем внутри цикла ещё раз проверка if(flag) return

Anatoly
15.12.2017
09:07:58
Я хоть и не люблю тернарники, но вариант с тернарником лучше. Там один раз вызывается do_stuff, и вообще он короче. Одно не понимаю, зачем внутри цикла ещё раз проверка if(flag) return
ну, вот ты даже не понял алгоритм. если флаг, найти и выполнить do_stuff для найденного, иначе выполнить для всех. это говорит о том, что код не понятен и требует рефакторинга

Azoyan
15.12.2017
09:08:07
То есть do_stuff потенциально изменяет флаг?

Alexander
15.12.2017
09:08:41
Всё, приговорил...
а что приговаривать? нужно сидеть и писать компилятор ?

и пока что их компилятор говно

Berkus
15.12.2017
09:09:16
То есть do_stuff потенциально изменяет флаг?
нет, просто такой кривой код

Azoyan
15.12.2017
09:10:14
В смысле, зачем тогда флаг проверять каждую итерацию

Alexander
15.12.2017
09:10:16
Google
Berkus
15.12.2017
09:10:17
Alexander
15.12.2017
09:10:25
есть два: clang/c2 и msvc

Berkus
15.12.2017
09:10:32
В смысле, зачем тогда флаг проверять каждую итерацию
ОДИН раз флаг проверяется, ты видишь return?

Ilia
15.12.2017
09:10:41
Половина на аутсорсе.

Berkus
15.12.2017
09:10:52
Половина на аутсорсе.
воу воу, это никого не волнует

Anatoly
15.12.2017
09:10:54
ОДИН раз флаг проверяется, ты видишь return?
или если не флаг, то на каждой итерации

Alexander
15.12.2017
09:11:04
Половина на аутсорсе.
1) Откуда инфа? 2) А какая мне разница как пользователю?

Berkus
15.12.2017
09:11:20
или если не флаг, то на каждой итерации
а, ну да. но вопрос же не в этом?

Ilia
15.12.2017
09:11:28
1) Откуда инфа? 2) А какая мне разница как пользователю?
1) из сети 2) я не говорил, что для тебя будет какая-то разница.

Anatoly
15.12.2017
09:11:45
Alexander
15.12.2017
09:11:49
1) из сети 2) я не говорил, что для тебя будет какая-то разница.
второе никак не влияет на принадлежность компилятора компании.

Berkus
15.12.2017
09:11:51
1) из сети 2) я не говорил, что для тебя будет какая-то разница.
если так подходить то половина шланга на БЕСПЛАТНОМ аутсорсе

Alexander
15.12.2017
09:12:01
а первое - пруфца хоть кинь какого-нибудь

Azoyan
15.12.2017
09:12:05
Berkus
15.12.2017
09:12:29
Return будет если flag == true.
ну вот у Анатолия получился код по которому это сразу видно

а по этому видно что "сложнааа"

Igor
15.12.2017
09:12:45
Return будет если flag == true.
если условие выполнено, то действие выполняется только над одним найденным элементом, если нет то над всеми

Anatoly
15.12.2017
09:14:30
Berkus
15.12.2017
09:16:10
ну вот, как проговорил так и пиши, не надо экономить на читаемости
+, всё равно компилятор найдет способ это соптимизировать еще лучше

Google
Igor
15.12.2017
09:16:19
вообще для полноты картины, такой цикл встречается в двух функциях, и хотя condition одинаковый, do_stuff делает принципиально разные вещи, а код - чужого авторства в ревью-доске вроде как и хочется предложить вынести какой-то for_all_or_found(bool condition, Func action) + bool do_stuff1(pair<>&); bool do_stuff2(pair<>&);, но присутствует чувство, что начинаю городить огород на пустом месте 9_6

+, всё равно компилятор найдет способ это соптимизировать еще лучше
об оптимизациях насколько хорошо оптимизируются лямбды без захвата в гцц пятилетней давности?

Berkus
15.12.2017
09:16:52
лишний огород, лучше do_stuff вынеси в отдельный метод

об оптимизациях насколько хорошо оптимизируются лямбды без захвата в гцц пятилетней давности?
меня мало волнует гцц пятилетней давности, я только что переключил проект с 5.5 на 7.2 чего и вам желаю

Berkus
15.12.2017
09:18:13
конечно, но гцц он собирается только под линукс, андроид иос и мак собираются шлангом

линукс тоже надо вжухнуть на шланг, но потом

Дмитрий
15.12.2017
09:20:51
а зачем?
А зачем не? Кажется, он куда более дружелюбен по части сообщений об ошибках, и на максимум оптимизирует так, что вполне может и выиграть. Выигрывает не всегда, но пробовать можно.

Igor
15.12.2017
09:21:01
хотеть переехать с 4.4 на trunk( ещё бы это не подразумевало пересборку всех тулсетов под три ARM(

Berkus
15.12.2017
09:23:58
хотеть переехать с 4.4 на trunk( ещё бы это не подразумевало пересборку всех тулсетов под три ARM(
ну то есть непонятно зачем тебе вопрос про оптимизацию лямбд - без захвата они эквивалентны указателю на функцию же

Grigor
15.12.2017
09:24:06
в плане оптимизаций clang хуже
Примерно одинаково ведь, не?

Alexander
15.12.2017
09:24:12
в большинстве случаев выигрывает gcc

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

Berkus
15.12.2017
09:24:35
Примерно одинаково ведь, не?
плюс-минус, там разница больше в имплементации стдлибы, которая у кланга конформинг но медленней

Antony
15.12.2017
09:24:38
линукс тоже надо вжухнуть на шланг, но потом
Есть проект по переносу ядра линукс на clang https://lwn.net/Articles/734071/ Из плюсов - другие варнинги, другие санитайзеры. Из минусов - пока что clang плохо умеет некоторые фишки GCC и плохо работает с inline asm

Alexander
15.12.2017
09:24:43
потмоу что бывает, что и шланг шустрее

Google
Grigor
15.12.2017
09:24:54
Вроде не так давно они были сравнимы, где то один, гле то другой лучше

Кирилл
15.12.2017
09:25:40
Alexander
15.12.2017
09:25:53
@berkus ну так зачем на шланг уезжаешь?)

Berkus
15.12.2017
09:25:56
@berkus ну так зачем на шланг уезжаешь?)
я никуда не уезжаю, прочитай внимательно

Admin
ERROR: S client not available

Grigor
15.12.2017
09:26:40
Я бы пересел на шланг ради быстрых компиляшек

Berkus
15.12.2017
09:26:58
да и сообщения об ошибках в последних гцц весьма достойные

Igor
15.12.2017
09:27:36
А ещё в 4.4 нет лямбд
малость озадачился, потом вспомнил, что там где видел у нас лямбды, они использовались под линух с 4.8 ?

Grigor
15.12.2017
09:27:47
Видеть бы последние гцц, мы скромго сидим на 4.6((

Antony
15.12.2017
09:27:51
Меня больше интресует линуксовое ядро собранное с lto. Пока вроде не собирают. Кто нибудь знает какие проблемы там всплывают (помимо нежелания Линуса)?

Berkus
15.12.2017
09:34:08
еще где-нибудь аналогичная магия с лд скриптами ломается еще

Arseny
15.12.2017
10:04:33
О, привет!

Ilia
15.12.2017
10:22:06
Ну Conan-ы и названьице придумали... Искать что-то запаришься... Всё какие-то игры и левые картинки суёт...

Alex
15.12.2017
10:40:48
О, привет!
привет)

Google
Ilia
15.12.2017
10:42:02
@zamazan4ik , не знаешь, куда сам conan ставиться (на Шинде лучше бы)

Alexander
15.12.2017
10:52:09
@zamazan4ik , не знаешь, куда сам conan ставиться (на Шинде лучше бы)
А хз, не смотрел. Думаю, что куда-то в program files

К тому же, наверное, если через pip ставить, то поставится куда-то в пиповское

Дед Пегас
15.12.2017
10:53:53
Он ставится в пакеты в <DISK>:/Python<VER>/

Vitaliy
15.12.2017
10:54:02
@zamazan4ik ты кажется на хабре статьи по поводу использования конана писал. Можешь ещё раз сюда ссылки скинуть ?

Дед Пегас
15.12.2017
10:54:10
Т.е. туда, куда поставился Python.

Ilia
15.12.2017
10:55:27
А хз, не смотрел. Думаю, что куда-то в program files
Уже нашёл, $PREFIX\Python27\Lib\site-packages\conans

Vitaliy
15.12.2017
11:00:15
Благодарю

Alexander
15.12.2017
11:09:46
The second release candidates for the 1.66.0 release are now available at: <https://dl.bintray.com/boostorg/prerelease/> The in progress release notes are: <http://www.boost.org/users/history/in_progress.html> Library documentation is available at: <http://www.boost.org/doc/libs/1_66_0/> The SHA256 checksums are as follows: 596389389c005814ecb2a6b64c31dccd2c3e6fbc5a802b4dfada999ae5844628 boost_1_66_0_rc2.7z 5721818253e6a0989583192f96782c4a98eb6204965316df9f5ad75819225ca9 boost_1_66_0_rc2.tar.bz2 bd0df411efd9a585e5a2212275f8762079fed8842264954675a4fddc46cfcf60 boost_1_66_0_rc2.tar.gz e1c55ebb00886c1a96528e4024be98a38b815115f62ecfe878fcf587ba715aad boost_1_66_0_rc2.zip As always, the release managers would appreciate it if you download the candidate of your choice and give building it a try. Please report both success and failure, and anything else that is noteworthy. ___________________________________________ Boost-users mailing list Boost-users@lists.boost.org https://lists.boost.org/mailman/listinfo.cgi/boost-users

Alexander
15.12.2017
11:33:12
Andrei
15.12.2017
12:08:20
Если это конечно не msvc :}
не надо тут. MSVC зачастую не хуже clang-а оптимизирует код.

Alexander
15.12.2017
12:10:59
Начиная с самой последней версии - поверю, то не очень

Самая последняя - 15.5

Andrei
15.12.2017
12:13:48
Можно сколько угодно снисходительно улыбаться с видом мудрецов познавших все тонкости компиляторов, но без обширных пруфов любые утверждения, о том что кто-то кого-то хуже — голословны.

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