
Varkus
17.04.2017
13:06:43

Дед Пегас
17.04.2017
13:06:45
В рамках плюсов, конечно.

Vitaly
17.04.2017
13:07:01
Ассемблерные вставки действительно зло и их не должно быть в нормальном проекте. Современные компиляторы C/CXX оптимизируют намного лучше, чем способен написать ассемблерщик с 20-летнем стажем. К тому же такой код со вставками не соберётся на других архитектурах, в отличие от нормального C/CXX кода.

Дед Пегас
17.04.2017
13:07:36

Google

Дед Пегас
17.04.2017
13:07:41
И он как раз таки пишет асм.

Плюшка
17.04.2017
13:07:52
Ассемблер нужен только там, где без него действительно никак

Дед Пегас
17.04.2017
13:08:12
И ковырять асмовыхоп компиля бывает полезно. Для исправления компиляторов.

Varkus
17.04.2017
13:13:13

Vitaly
17.04.2017
13:17:40

Alexander
17.04.2017
13:19:48


Antony
17.04.2017
13:21:00
Блин, ну абстрагируйтесь от чисел.
Ясно же, что асм это возня с регистрами процессора.
Но я не нашел более простых пальцев для показать: асм и не асм.
Очень рад за компиляторы, что они такие умные, но присутствующие тут же давят на портабельность. А речь начиналась о СКОРОСТИ.
ИМХО, ни один компилятор не обойдёт асм спеца.
Я вас удивлю, некоторые вещи компилятор делает намного лучше людей.
Например, страшно представить, сколько времени надо асм профессионалу, чтобы оптимально реализовать
int foo(int i) { return i % 3; }
А вот компилятор делает это за микросекунды:
movsxd rax, edi
imul rcx, rax, 1431655766
mov rdx, rcx
shr rdx, 63
shr rcx, 32
add ecx, edx
lea ecx, [rcx + 2*rcx]
sub eax, ecx
ret
И я не поверю, что есть асм мастера, которые помнят все подобные константы и хитрости наизусть

Дед Пегас
17.04.2017
13:21:53
Пардон, я тупой, а в чём тут хитрость?
// правда, в чём?

Varkus
17.04.2017
13:25:37
Я вас удивлю, некоторые вещи компилятор делает намного лучше людей.
Например, страшно представить, сколько времени надо асм профессионалу, чтобы оптимально реализовать
int foo(int i) { return i % 3; }
А вот компилятор делает это за микросекунды:
movsxd rax, edi
imul rcx, rax, 1431655766
mov rdx, rcx
shr rdx, 63
shr rcx, 32
add ecx, edx
lea ecx, [rcx + 2*rcx]
sub eax, ecx
ret
И я не поверю, что есть асм мастера, которые помнят все подобные константы и хитрости наизусть
Шах и мат, вы правы.
А асм компилятор тоже может так оптимизировать?

Antony
17.04.2017
13:25:51
Пардон, я тупой, а в чём тут хитрость?
Очень тяжёлую операцию "остаток от деления" компилятор свёл к операциям умножения, сложения и сдвига с магической константой 1431655766; При этом сэкономил около 15 тактов.

Дед Пегас
17.04.2017
13:26:30
Круто.
Спасибо)

Google

Antony
17.04.2017
13:28:28
Асм не компилятор, а транслятор

Varkus
17.04.2017
13:28:33

Alexander
17.04.2017
13:28:48

Varkus
17.04.2017
13:29:14
Пля, я знал я знал, но забыл ☺️

Antony
17.04.2017
13:29:55

/dev
17.04.2017
13:31:50

Kirill
17.04.2017
13:33:29
либо разработчикам компиляторов

Oleg
17.04.2017
13:41:13
Эм я что-то не пойму. Почему оно так работает: https://bpaste.net/show/776258dbfcb2
Структура разве не в стеке? И при выходе из функции стек же чистится. Да? Нет? Лыжи? Я?

Antony
17.04.2017
13:44:29

Oleg
17.04.2017
13:45:18
А тут что можно обсуждать?
ВариаDики? %)

Alexander
17.04.2017
13:46:44
вы можете попробовать спросить про возвращение по значению на linux.org.ru в разделе Development. Там Вам помогут точно

Никита
17.04.2017
14:03:48
Я вас удивлю, некоторые вещи компилятор делает намного лучше людей.
Например, страшно представить, сколько времени надо асм профессионалу, чтобы оптимально реализовать
int foo(int i) { return i % 3; }
А вот компилятор делает это за микросекунды:
movsxd rax, edi
imul rcx, rax, 1431655766
mov rdx, rcx
shr rdx, 63
shr rcx, 32
add ecx, edx
lea ecx, [rcx + 2*rcx]
sub eax, ecx
ret
И я не поверю, что есть асм мастера, которые помнят все подобные константы и хитрости наизусть
Ну это на обкатанных архитектурах. В arm64 на днях компилил -- часто гоняет туда-сюда значения между регистрами сто раз и не видит простые оптимизации

Antony
17.04.2017
14:13:34

Friedrich
17.04.2017
14:14:36
Кроме шуток, авторы gcc нормально реагируют на сообщения о недостаточной оптимизации. У них в трекере есть соответствующие категории багов, и они их исправляют понемножку.

Никита
17.04.2017
14:15:41

Alexander
17.04.2017
14:20:03

Antony
17.04.2017
14:21:10

Google

Никита
17.04.2017
14:21:42

Friedrich
17.04.2017
14:22:15

Antony
17.04.2017
14:26:58
Спасибо за совет, обращусь
Сразу расскажу, как правильно обращаться:
Проблему надо локализовать. Тоесть сделать минимальный пример, который не включает заголовочные файлы, но производит неоптимальный машинный код. Стоит кратко описать, что именно вам кажется неоптимальным. Обязательно надо указывать свой реальный почтовый адрес при регистрации - зачастую нужно какое-то обсуждение проблемы (спросят версию компилятора, что-то системное, флаги компиляции и т.д.) - без верного адреса диалога не будет.

Tema
17.04.2017
14:30:37

Alexander
17.04.2017
14:30:51

Никита
17.04.2017
14:36:39

Tema
17.04.2017
14:37:40

Alex Фэils?︙
17.04.2017
14:53:16
Я вас удивлю, некоторые вещи компилятор делает намного лучше людей.
Например, страшно представить, сколько времени надо асм профессионалу, чтобы оптимально реализовать
int foo(int i) { return i % 3; }
А вот компилятор делает это за микросекунды:
movsxd rax, edi
imul rcx, rax, 1431655766
mov rdx, rcx
shr rdx, 63
shr rcx, 32
add ecx, edx
lea ecx, [rcx + 2*rcx]
sub eax, ecx
ret
И я не поверю, что есть асм мастера, которые помнят все подобные константы и хитрости наизусть
похоже на магию обратного квадратного корня

Daniyal
17.04.2017
16:30:53
Что нынче для сериализации XML уважаемые господа разработчики С++ используют?

Alex Фэils?︙
17.04.2017
16:31:28
я тинихмл2 люблю

Daniyal
17.04.2017
16:32:30
Спасибо) буду смотреть в эту сторону

Alexander
17.04.2017
17:18:35
Для тех, кто не в курсе: в Boost почти завезли вкусняшку новую - Boost.Process
http://www.boost.org/users/history/in_progress.html

Evgeniy
17.04.2017
17:28:12

Nikolai
17.04.2017
17:31:32

Alexander
17.04.2017
17:31:47
рантайм

Daniyal
17.04.2017
17:44:42
Я вообще рад. Я пока что тащу boost.Process в инклюдах и это мне совсем не доставляет
Для тех, кто не в курсе: в Boost почти завезли вкусняшку новую - Boost.Process
http://www.boost.org/users/history/in_progress.html
С начальством уже договорился, что перейдем на 1.64 сразу как только зарелизят
Boost.process header only, если кто не знает

Evgeniy
17.04.2017
17:47:40
А он кроссплатформенный в версии которую зарелизили? Или для винды свои функции, для линукса свои?

Google

Daniyal
17.04.2017
17:50:13
В целом кросплатформенный, но есть и некоторый платформеннозавистмые частности
В общем случае кросплатформенныц
Но я под виндой лично не пробовал

Anton
17.04.2017
17:55:24
Он зависит от fs и system вроде.
С 2014 года оно не обновлялось.
Ковырял примеры год назад.

Admin
ERROR: S client not available

Anton
17.04.2017
17:57:31
Это логично как бэ

Evgeniy
17.04.2017
17:59:42

Anton
17.04.2017
18:03:15

Александр
17.04.2017
18:13:10
кто-нибудь может привести разумный пример перегрузки operator&?

Alexander
17.04.2017
18:14:17
может перед тем как вернуть ссылку проверить валидность обекта и если что кинуть исключение

Mikhail
17.04.2017
18:14:18

Alexander
17.04.2017
18:14:53

Mikhail
17.04.2017
18:15:48
Я вообще его не ждал, просто очень давно видел:)

Alexander
17.04.2017
18:16:34
и тишина....

Mikhail
17.04.2017
18:17:55
Я думаю через постель было бы быстрее :)

Alexander
17.04.2017
18:18:22

Google

Mikhail
17.04.2017
18:19:36

Alexander
17.04.2017
18:20:10

Mikhail
17.04.2017
18:20:52

Alexander
17.04.2017
18:21:20

Mikhail
17.04.2017
18:22:20

Alexander
17.04.2017
18:23:19

Mikhail
17.04.2017
18:25:03

Alexander
17.04.2017
18:25:52
Надо поинтересоваться у @antoshkka , как оно на самом деле - он то явно больше меня в Boost разбирается. Он тебе точно правду расскажет)

Demyan
17.04.2017
18:44:09
Привет всем
кто нить юзал hrtimer ?

Alexander
17.04.2017
18:46:56

Demyan
17.04.2017
18:47:13
ну да)
high resolution timer api из ядра линуха

Surreal
17.04.2017
18:58:19
В хроно же есть high_resolution_clock или типа того что-то. Или ядреный точнее?

Demyan
17.04.2017
19:01:39
что за хроно?
ну наверняка штуки из ядра линуха будут шустрее

Alexander
17.04.2017
19:03:25

Demyan
17.04.2017
19:04:01
1) 0.5 наносекунды точность нужна
2)ядрышко пизже
3)сорян не туда попал)