@ProCxx

Страница 2362 из 2477
Firstname
19.09.2018
18:29:23
7 8 9 подвеситься к 5 справа

Max
19.09.2018
18:34:13
7 8 9 подвеситься к 5 справа
А. Согласен. Ок, другой пример: в текущей так же 10, в левой 5. Но передаём теперь { 3 , 7, 15 }

Firstname
19.09.2018
18:37:14
Да, согласен там косяк все же

причем такой, нихуевый

Google
Pavel
19.09.2018
18:38:40
привет всем кто-нибудь собирал LLVM + clang с конкретным бэком?

Anton
19.09.2018
18:41:17
привет всем кто-нибудь собирал LLVM + clang с конкретным бэком?
привет, скачиваешь - собираешь ) а в чём проблема?

Pavel
19.09.2018
18:41:35
gcc8 орет на каждый memcpy

что то типа writing to an object ".." with no trivial copy-assignment гуглю я видимо неправильно, но ничего не нашел

Anton
19.09.2018
18:43:39
я видимо не правильно понял, что значит "с конкретным бэком"

думал просто нужную версию llvm собрать надо

Pavel
19.09.2018
18:44:01
Мне надо только ARC архитектуру

и Clang

Chiveson
19.09.2018
18:45:11
и Clang
собери clang'ом?)

Pavel
19.09.2018
18:45:45
Я убираю из CMakeLists лишнее, но билдится все равно с варнингами + qtcreator орет под весь код в Target/ARC - непонятные Semantic issues

Max
19.09.2018
18:46:30
причем такой, нихуевый
Наверное, можно формировать пачки не фиксированно по сотне, а в зависимости от current, parent, left и right.

Firstname
19.09.2018
18:47:20
Наверное, можно формировать пачки не фиксированно по сотне, а в зависимости от current, parent, left и right.
с вертухи не придумаю как надо ж какое - то древо делать чтобы вставлять

Pavel
19.09.2018
18:55:21
собери clang'ом?)
Те же варнинги

Google
Pavel
19.09.2018
19:01:26
но уже не 40к, а 200 штук))

Anton
19.09.2018
19:02:01
варнинги - это же норм ) ошибок нет?

Pavel
19.09.2018
19:02:13
неа

А кто-то писал свои архитектуры? Шарит как инструкции дописывать?

Max
19.09.2018
19:05:48
с вертухи не придумаю как надо ж какое - то древо делать чтобы вставлять
Нда. Да и забей вообще. Можно просто не с корня, а от текущего искать место для каждой ноды. Для большого дерева глядишь слегка сэкономишь такты.

Andrew
19.09.2018
19:52:39
Ну вот ни разу не правда: https://godbolt.org/z/qv__KG
Впервые вижу, что префиксная форма оператора быстрее инфиксной, забавно.

Andrew
19.09.2018
20:10:36
Ну там в первой функции бы просто inc бы исчез, нет? На 1 инструкцию короче получается.

Max
19.09.2018
20:20:11
Ну там в первой функции бы просто inc бы исчез, нет? На 1 инструкцию короче получается.
Кажется, что нет. Почему он должен исчезнуть? С телефона godbolt плохо работает (

Andrew
19.09.2018
20:42:03
Потому что он меняет eax, который используется только для возвращаемого значения. Если возвращать a++ вместо ++a, то и значение менять не нужно? Там одной командой делается "a++ по смыслу", а потом инкрементом догоняется +1 на возвращаемом значении.

Anton
19.09.2018
20:46:15
если вы там пишете return a++; то видимо да, компилятор может догадаться что инкремент делать не нужно )

по ссылке просто return ++a; было вроде

кстати циклы вида for (int i=0; i<N; ++i) иногда хуже оптимизируются чем for (int i=0; i<N; i++), т.к. оптимизатор ожидает увидеть скорее последнее

Anton
19.09.2018
20:49:42
к сожалению нету, давно это ковырял, несколько лет назад

уже может быть не актуально

Ioann V
19.09.2018
20:50:16
я думаю, оно неактуально года так с 2к10ого

Anton
19.09.2018
20:50:31
смотря для какого компилятора

в msvc совсем недавно за оптимизатор взялись

Google
Anton
19.09.2018
20:50:57
в gcc давно всё неплохо

Max
19.09.2018
20:51:11
Выглядит сомнительно. Инкремент инт -- он и есть инкремент. Его в цикле не надо оптимизировать. А вот постикремент - надо

Ioann V
19.09.2018
20:51:12
но это не значит, что в такой простой кейс msvc2010 не может

Anton
19.09.2018
20:51:14
в clang как-то очень активно всё меняют, разные версии оптимизируют сильно по-разному

Egor
19.09.2018
20:51:50
Впервые вижу, что префиксная форма оператора быстрее инфиксной, забавно.
суффиксная форма создаёт временную переменную, если это будет толстый объект, то расходы будут заметные

Anton
19.09.2018
20:52:01
Выглядит сомнительно. Инкремент инт -- он и есть инкремент. Его в цикле не надо оптимизировать. А вот постикремент - надо
ну я не изучал ассемблерные листинги, просто замерил, что постинкремент оказался быстрее в среднем на большом количестве запусков

Anton
19.09.2018
20:52:25
там внутри цикла были ещё другие инкременты - может это как-то влияло

Anton
19.09.2018
20:52:30
может в кэше дело было

Ioann V
19.09.2018
20:52:35
надо минимумы брать. как КК завещал.

Anton
19.09.2018
20:52:53
надо минимумы брать. как КК завещал.
ну это для официальных бенчмарков )

посмотрите какие мы крутые

а почему среднее нехорошо?

Andrew
19.09.2018
20:55:54
если вы там пишете return a++; то видимо да, компилятор может догадаться что инкремент делать не нужно )
Дело не в return, инкремент в любом случае на глобальной переменной делается. Дело в конкретной ассемблерной инструкции.

Anton
19.09.2018
20:56:45
а ну да

не локальная же

Alex Фэils?︙
19.09.2018
20:57:13
"Как известно, Java не тормозит. Но мы всё равно решили переписать одну программу с Java на C++ и заодно проверили в деле наш асинхронный сервер. Во время доклада мы по шагам создадим небольшое приложение и задумаемся о вещах, которых не хватает в C++ и современных операционных системах. Плюс немного расскажем о нагрузке на нашу систему."

ОРУ блядь

Google
Andrew
19.09.2018
20:57:32
если что среднее брать дело не хорошее
Почему среднее хуже? На практике ведь и важно, какая разница, что из 1к операций 1 выполнится чуть быстрее.

Alex Фэils?︙
19.09.2018
20:59:28
современные ОС - тот еще кал. но это #holywar и OCHE толстый #наброс Заранее извените

Ioann V
19.09.2018
20:59:50
Почему среднее хуже? На практике ведь и важно, какая разница, что из 1к операций 1 выполнится чуть быстрее.
никакие посторонние процессы не могут заставить программу работать быстрее, только медленнее

Anton
19.09.2018
21:00:24
никакие посторонние процессы не могут заставить программу работать быстрее, только медленнее
один самый первый раз может выполниться на максимальной частоте процессора

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

процы же больно умные сейчас

Ioann V
19.09.2018
21:01:05
ну так значит остальные тесты показывают не те значения.

Anton
19.09.2018
21:01:32
ну вот когда сравниваешь два варианта чего-нибудь

для одного из них минимум может быть лучше просто потому, что процессор был холоднее например

на среднее обычно не влияет

вернее влияет слабо

на медиану может вообще не влиять

Ioann V
19.09.2018
21:03:32
Ну и замеришь ты совсем не то, что должно следовать ожиданиям на данном железе. Ты еще поверх запусти что то сложное для проца.

Брать минимум - общеизвестная практика.

Anton
19.09.2018
21:04:31
ну в общем тогда надо чтобы условия для запуска максимально одинаковые были

типа большой idle период между запусками вариантов

и прочее, чтобы ничего не влияло

Andrew
19.09.2018
21:07:51
Просто минимум намного сильнее подвержен выбросам, в отличие от медианы. В случаях каких-то микрозамеров это может оказать влияние. На вскидку, можно замерить 2-3 минимальных значения и посмотреть, насколько они отличаются.

Ioann V
19.09.2018
21:08:16
Просто минимум намного сильнее подвержен выбросам, в отличие от медианы. В случаях каких-то микрозамеров это может оказать влияние. На вскидку, можно замерить 2-3 минимальных значения и посмотреть, насколько они отличаются.
чем же подвержен выбросам? На него другие процессы влиять не могут, в лучшую сторону. А в худшую и будет медиана, да. В холивар вдаваться не хочу, советую почитать Криса.

Google
Andrew
19.09.2018
21:09:19
Вообще непонятно, зачем минимум именно на практике. Тебе чаще всего важна производительность на весь процесс, обработать там 100к запросов, бессмысленно учитывать минимальное время обработки запроса.

Andrew
19.09.2018
21:10:20
чем же подвержен выбросам? На него другие процессы влиять не могут, в лучшую сторону. А в худшую и будет медиана, да. В холивар вдаваться не хочу, советую почитать Криса.
Так тебе получить циферку, чтобы померять, у кого меньше с другими пацанами в интернете, или оценить что-то в реальности?

Вот есть у тебя цифра -- "выполнение 1 запроса". Если это среднее/медиана, то умножив ее на количество запросов, ты получишь их время выполнения, с достаточной точностью, причем можно даже доверительный интервал построить. А с минимумом ты что будешь делать? Получать нижнюю границу? "Запросы выполнятся не быстрее, чем за 1 час"? Это ж вообще не нужно.

Andrew
19.09.2018
21:31:06
Я про то, что если грамотно поставить тест, типо без обновлений и всего такого, то уже становится разумнее брать среднее, потому что это то, что тебе потом понадобится.

Andrew
19.09.2018
21:33:37
Наоборот, именно в среднем есть смысл, это же статистика.

Evgeniy
19.09.2018
21:34:37
Наоборот, именно в среднем есть смысл, это же статистика.
Какая статистика, 57648 циклов это 57648 циклов

Andrew
19.09.2018
21:34:48
Я понимаю, что для замеров АvsБ разумно брать минимум, если запуски абсолютно независимы друг от друга (с учетом переаллокаций и кешей это мне кажется маловероятным), но в целом минимум для практики выглядит ущербной статистикой, от нее почти нет толку.

Ну сравни, что ты можешь сказать на основе каждого из следующих утверждений: 1. Процесс работает не быстрее, чем 1с 2. Процесс работает в среднем за 7 секунд 3. Процесс работает в худшем случае до 20 секунд. Из 2 и 3 я могу получить полезную информацию про работу сервиса; из 1 я могу понять в лучшем случае, сколько я гарантировано могу пить кофе, поставив пачку задач выполняться.

Лучший случай на практике наименее интересен.

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