169 похожих чатов

Итак, сравниваем 17 инструкций и 5 инструкций. О боже, что

же будет быстрее??

28 ответов

7 просмотров

Однажды асмофанатики сравнят две программы (асм и си) с большим количеством функционала, но пока сравнивают только хеллоу ворды, так как программу с большим количеством функционала асмофанатики ещё не написали

КТ315- Автор вопроса
КТ315
Ладно, ты меня уговорил. @yakha_chakva - 7.

Опять аргументы кончились.

КТ315- Автор вопроса
s54820
Опять аргументы кончились.

Нет, он просто мне 17 сообщений понаписал, пока я спал. С провокациями.

КТ315- Автор вопроса
s54820
Опять аргументы кончились.

Ха, прикольно. xadd медленнее. Намного...

КТ315
screenshot Ха, прикольно. xadd медленнее. Намного...

Я предполагал, что каждая xadd будет друг друга ждать, но по идее должно было уравновесить те несколько инструкций от компилятора.

КТ315- Автор вопроса
s54820
Я предполагал, что каждая xadd будет друг друга жд...

Гермес ещё у себя проверит, у него нет Invariant TSC.

КТ315
Гермес ещё у себя проверит, у него нет Invariant T...

Так чего тебе инвариант, ты же не такты считаешь.

КТ315- Автор вопроса
s54820
Так чего тебе инвариант, ты же не такты считаешь.

Ну, да, но в любом случае, интересно как у Гермеса будет. У него, к примеру, movsb и ручной цикл были одинаковы по скорости, а у меня ручной был быстрее. У него на процессоре как будто старые инструкции более оптимизированы.

КТ315
Ну, да, но в любом случае, интересно как у Гермеса...

Я не видел целиком, что вы там написали, но продолжаю по умолчанию считать, что там шума от самих измерений и переключений контекста больше, чем данных.

КТ315
screenshot Ха, прикольно. xadd медленнее. Намного...

Мне clang вот такой код выдал на фибоначчи fib(int): test edi, edi js .LBB0_1 lea esi, [rdi + 1] mov ecx, esi and ecx, 7 cmp edi, 7 jae .LBB0_7 mov eax, 1 xor edx, edx jmp .LBB0_4 .LBB0_1: mov eax, 1 ret .LBB0_7: and esi, -8 mov eax, 1 xor edx, edx .LBB0_8: add edx, eax add eax, edx add edx, eax add eax, edx add edx, eax add eax, edx add edx, eax add eax, edx add esi, -8 jne .LBB0_8 .LBB0_4: test ecx, ecx je .LBB0_6 .LBB0_5: mov esi, eax mov eax, edx add eax, esi dec ecx mov edx, esi jne .LBB0_5 .LBB0_6: ret Можешь сравнить с кодом от gcc? Интересно стало, что быстрее

КТ315- Автор вопроса
КТ315
screenshot

Да разница меньше 10%

КТ315- Автор вопроса
КТ315- Автор вопроса
The Bird of Hermes
Да разница меньше 10%

Надо написать вариант без xadd, но чтобы не сохранять регистры вообще. Тогда обязательно получится обогнать любой срампилятор.

КТ315
На 5 тиков))

Мне кажется на фоне того, как код разрастается, это несущественно

КТ315
screenshot

Так ты их и так не сохраняешь)

КТ315- Автор вопроса
КТ315- Автор вопроса
Joshua Jakowlew
Мне clang вот такой код выдал на фибоначчи fib(int...

Стоп, нечестно!! Не обогнал, не считается. Ты скинул код с соглашением x64, используешь аргумент из EDI, и EDI не сохраняешь. А внутри ещё ESI используется. Минимум 2 push/pop надо ))

КТ315
Стоп, нечестно!! Не обогнал, не считается. Ты скин...

Я выдал то, что мне выдал компиль. Можешь поиграться https://godbolt.org/z/K9791h464

КТ315- Автор вопроса
Joshua Jakowlew
Я выдал то, что мне выдал компиль. Можешь поиграть...

Так m32 добавлять надо, флагов что-ли не знаешь..

КТ315
Так m32 добавлять надо, флагов что-ли не знаешь..

А ты 32 битную сборку хочешь что ли делать?

КТ315- Автор вопроса
The Bird of Hermes
А ну попробуй их добавить

С m32 всё равно побыстрее. Он обыграл, не использует EDI, только ESI сохранил.

КТ315
Ладно, ты меня уговорил. @yakha_chakva - 7.

ну что и следовало ожидать, всё как высказывал вчера - сарказм и нелепые ответы заканчиваются и приходит мут неугодных

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта