Однажды асмофанатики сравнят две программы (асм и си) с большим количеством функционала, но пока сравнивают только хеллоу ворды, так как программу с большим количеством функционала асмофанатики ещё не написали
Ладно, ты меня уговорил. @yakha_chakva - 7.
Опять аргументы кончились.
Нет, он просто мне 17 сообщений понаписал, пока я спал. С провокациями.
Я предполагал, что каждая xadd будет друг друга ждать, но по идее должно было уравновесить те несколько инструкций от компилятора.
Гермес ещё у себя проверит, у него нет Invariant TSC.
Так чего тебе инвариант, ты же не такты считаешь.
Ну, да, но в любом случае, интересно как у Гермеса будет. У него, к примеру, movsb и ручной цикл были одинаковы по скорости, а у меня ручной был быстрее. У него на процессоре как будто старые инструкции более оптимизированы.
Я не видел целиком, что вы там написали, но продолжаю по умолчанию считать, что там шума от самих измерений и переключений контекста больше, чем данных.
Мне 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? Интересно стало, что быстрее
Да разница меньше 10%
На 5 тиков))
Надо написать вариант без xadd, но чтобы не сохранять регистры вообще. Тогда обязательно получится обогнать любой срампилятор.
Мне кажется на фоне того, как код разрастается, это несущественно
Так ты их и так не сохраняешь)
Ну сделай add и xchg отдельно
Стоп, нечестно!! Не обогнал, не считается. Ты скинул код с соглашением x64, используешь аргумент из EDI, и EDI не сохраняешь. А внутри ещё ESI используется. Минимум 2 push/pop надо ))
А ну попробуй их добавить
Я выдал то, что мне выдал компиль. Можешь поиграться https://godbolt.org/z/K9791h464
Так m32 добавлять надо, флагов что-ли не знаешь..
А ты 32 битную сборку хочешь что ли делать?
С m32 всё равно побыстрее. Он обыграл, не использует EDI, только ESI сохранил.
ну что и следовало ожидать, всё как высказывал вчера - сарказм и нелепые ответы заканчиваются и приходит мут неугодных
Обсуждают сегодня