@ru_python

Страница 1300 из 9768
Zahar
27.07.2016
08:01:45
такс

кто шарит в плюсах

что долго работает ксоры или побитовый сдвиг?

Warlock90000
27.07.2016
08:02:11
кто шарит в плюсах
это крестики такие

Google
Zahar
27.07.2016
08:02:15
да

Warlock90000
27.07.2016
08:02:47
тогда не шарю :)

Aragaer
27.07.2016
08:05:24
в смысле без выделенной строки?

если ее удалить, то получаем пару пустых циклов

а, не, один пустой цикл

Danil
27.07.2016
08:06:23
который компилятор удалит

Aragaer
27.07.2016
08:06:41
... или все-таки два. Потому что дальше тоже ничего не относится к первому циклу

Alisa
27.07.2016
08:06:59
https://habrahabr.ru/post/241740/ ????????????

Aragaer
27.07.2016
08:07:04
ну а так чо, 900 операций побитового сдвига... хотя конечно не, скорее 480

Danil
27.07.2016
08:08:02
что долго работает ксоры или побитовый сдвиг?
оба одинаково вроде должны работать

Aragaer
27.07.2016
08:08:12
здесь дороже - 450 операций разыменования

я так понимаю, массив гигантского размера и мы дергаем очень разные его части

Danil
27.07.2016
08:09:14
типа в разных страницах могут лежать разные части массива?

Google
Aragaer
27.07.2016
08:09:15
внутренний цикл идет по j, которая больше, чем i, поэтому на каждой итерации внутреннего цикла у нас идет подгрузка соответствующего куска из памяти, потому что у нас cache miss

да не просто в разных страницах - там индексы различаются на 2^31

ну... 2^29

ок

а в одной странице (если страница 4к) всего-то 1024 интов помещается

если это массив интов такого размера, то он порядка гигабайта

и у нас 450 обращений в почти случайные места этого гигабайтного массива

не в ксорах вобщем дело, и не в сдвигах

Danil
27.07.2016
08:11:33
ща чот меня штырит и мне кажется что там меньше индексы

Aragaer
27.07.2016
08:12:24
i и j пробегают до 29, то есть наибольшее значение это 1 << 29 + 1 << 28

Paul
27.07.2016
08:12:26
вот nameko обменивается сообщениями через AMQP, это нормальная практика? мне просто хайлоад надо построить желательно на микросервисах..
Нормальная, но не забывайте о мониторинге ampq- он имеет милую тенденцию внезапно умирать под нагрузкой

Aragaer
27.07.2016
08:12:53
да, если что, у внешнего цикла можно сделать до < 29 8)

Artem
27.07.2016
08:12:58
http://www.theverge.com/circuitbreaker/2016/7/27/12294530/xiaomi-mi-notebook-air-macbook-competitor

Aragaer
27.07.2016
08:13:01
но я думаю компилятор это сможет понять

Danil
27.07.2016
08:13:39
Aragaer
27.07.2016
08:14:26
можно там пошаманить на тему переупорядочивания циклов, чтобы сгруппировать близкие индексы

но особо не получится

Danil
27.07.2016
08:14:51
да там всего 900 обращений

чо из-за этого париться то?

Google
Aragaer
27.07.2016
08:15:07
450

Danil
27.07.2016
08:15:10
ну 1.5с может для кого-то и беда

450
ну ваще тады

Aragaer
27.07.2016
08:16:12
вобщем ксоры и побитовый сдвиг это элементарная арифметика, которую процессор выполняет за очень небольшое число тактов

Danil
27.07.2016
08:16:18
435 ваще

Zahar
27.07.2016
08:16:20
да там всего 900 обращений
Ну, все это в цикле

Aragaer
27.07.2016
08:16:24
а подгрузка из оперативки в кэш - за большое

ща, поищу табличку

Zahar
27.07.2016
08:16:53
Там примерно 6 300 000 операций

Непонятно, почему долго так

Danil
27.07.2016
08:17:25
пффффффффф

Zahar
27.07.2016
08:17:33
Мэп протестирован - не в нем

Aragaer
27.07.2016
08:17:36
https://blog.codinghorror.com/the-infinite-space-between-words/

Danil
27.07.2016
08:17:42
тебе выше @aragaer всё норм пояснил

Aragaer
27.07.2016
08:18:28
обращение к незакешированной памяти это порядка 350 циклов процессора

Aragaer
27.07.2016
08:18:53
на каждой итерации цикла у тебя максимум два сдвига и два ксора, это ну 10 щиклов

ооо

ну значит это 450 вычислений хэш функции, а это еще медленнее

Google
Danil
27.07.2016
08:19:37
ну ты же ваще можешь просто проверить, сохранить эти индексы в массив

и сделать одинарный цикл

Zahar
27.07.2016
08:20:00
короче

ради вас

а если добавить ^x - то 1.5c

Aragaer
27.07.2016
08:21:24
а у тебя какие флаги оптимизации стоят?

неужели компилятор сам не догадался это сделать?

Zahar
27.07.2016
08:21:38
-O2

Admin
ERROR: S client not available

Zahar
27.07.2016
08:21:52
что не догадался?

Aragaer
27.07.2016
08:21:54
должен был

x ^ (1 << i) это инвариант в пределах второго цикла

вынесение инвариантов это на о2 должно делаться

а

у тебя же нету c во внутреннем

сделай внутри c ^ (1 << j)

Zahar
27.07.2016
08:23:20
1.6 c

Aragaer
27.07.2016
08:23:45
так что точно не в сдвигах дело и не в ксорах. А в кэш миссах

тьфу

Zahar
27.07.2016
08:23:51
лол

Google
Aragaer
27.07.2016
08:23:53
в вычислении

Danil
27.07.2016
08:24:03
ну она достаточно дерьмовая

Aragaer
27.07.2016
08:24:28
ну разницы между (1 << i) ^ (1 << j) и c ^ (1 << j) немного

ксоров столько же, сдвигов меньше

а работает медленнее

Zahar
27.07.2016
08:25:05
ну, примерно так же

Aragaer
27.07.2016
08:25:25
ты ж сказал 252 мс против 1.6с

Zahar
27.07.2016
08:25:32
а

а, ну, я про x ^ (1 « i) ^ (1 « j)

хз

ну, по крайней мере

стоп

Aragaer
27.07.2016
08:26:08
более того, как мы видим, он делает вынесение инварианта - c ^ (1 << j) работает так же, как x ^ (1 << i) ^ (1 << j)

Danil
27.07.2016
08:26:09
я говорю, пусть попробует брать эти индексы из массива, и увидит, что дело было не в бобине

а в мапе

Zahar
27.07.2016
08:27:44
я попробывал unordered_map заменить на обычный

там хэши не вычисляются, но есть лог из-за к/ч дерева

стало 2с работать

впрочем, это отличие этих структур

Danil
27.07.2016
08:28:51
пщщщ пщщщ попробуй индексы из массива пщщщ пщщщ дело не в ксоре пщщ пщщ

Страница 1300 из 9768