Size: a a a

Ассемблер

2021 May 30

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
эт получается в досбоксе в разы быстрей?
источник

ST

Saenro T in Ассемблер
Ну там же несколько ядер уже работают, а с нуля только одно — первое
источник

ST

Saenro T in Ассемблер
источник

A

Aleksandr in Ассемблер
А полный исходник?
источник

ST

Saenro T in Ассемблер
+/- слегка модифицировал потом ещё
источник

A

Aleksandr in Ассемблер
Неправильно делаешь. Надо пару сотен тысяч раз выполнить, и смотреть на полученное время. И желательно не слишком сворачивая в цикл. Тогда можно будет делать выводы, а до тех пор магия спекуляции и конвееров ничего не даст оценить
источник

ST

Saenro T in Ассемблер
Это ты отстаиваешь свою позицию на счёт того, что XCHG быстрее трёх XOR?)
источник

A

Aleksandr in Ассемблер
Ага
источник

ST

Saenro T in Ассемблер
Давай так попробуем, напиши, а я вживлю)
источник

A

Aleksandr in Ассемблер
И зачем тебе в этом коде CPUID?
источник

ST

Saenro T in Ассемблер
Потому что RDTSCP не поддерживается
источник

ST

Saenro T in Ассемблер
источник

A

Aleksandr in Ассемблер
в качестве теста используй что-то в духе
        CPUID
       RDTSC

       mov cx, 65000
test:    
       XCHG     EDI, EAX
       XCHG     ECX, ESI
       
       XCHG     EDI, EAX
       XCHG     ECX, ESI
       
       XCHG     EDI, EAX
       XCHG     ECX, ESI
       LOOP test

       CPUID
       RDTSC
       ;output
       
       ;---
       
       CPUID
       RDTSC

       mov cx, 65000
test1:    
       XOR      ECX, ESI
       XOR      ESI, ECX
       XOR      ECX, ESI
       
       XOR      ECX, ESI
       XOR      ESI, ECX
       XOR      ECX, ESI
       
       XOR      ECX, ESI
       XOR      ESI, ECX
       XOR      ECX, ESI
       
       XOR      ECX, ESI
       XOR      ESI, ECX
       XOR      ECX, ESI
       
       XOR      ECX, ESI
       XOR      ESI, ECX
       XOR      ECX, ESI
       
       XOR      ECX, ESI
       XOR      ESI, ECX
       XOR      ECX, ESI
       LOOP test1

       CPUID
       RDTSC
       ;output
источник

A

Aleksandr in Ассемблер
В обоих случаях между измерениями будет 6*65000 замен
источник

d

disba1ancer in Ассемблер
а ты все прерывания запретил?
источник

ST

Saenro T in Ассемблер
Кроме не маскируемых
источник

d

disba1ancer in Ассемблер
попробовал бы ещё и их
источник

d

disba1ancer in Ассемблер
но вообще не должно влиять
источник

d

disba1ancer in Ассемблер
ещё попробуй завалится в плоский защищённый режим
источник

d

disba1ancer in Ассемблер
на время теста хотя бы
источник