Size: a a a

2020 August 02

AF

Aidar Fattakhov in supapro.cxx
>посмотреть реализацию на асме
опять же у вас соответствие ВЕСЬ КОД -> код на асме
а не кусочек кода -> код на асме
источник

EK

Eugene Krasnikov (ᴊɪ... in supapro.cxx
Aidar Fattakhov
>посмотреть реализацию на асме
опять же у вас соответствие ВЕСЬ КОД -> код на асме
а не кусочек кода -> код на асме
Ну найти нужный кусочек я смогу, если что.
источник

AF

Aidar Fattakhov in supapro.cxx
Aidar Fattakhov
есть фреймворки которые в какойто степени пытаются решить эту проблему но выходит у всех неочень
источник

RN

Ruslan Neshta in supapro.cxx
Eugene Krasnikov (ᴊɪɴ x)
Хочу, например, чтоб вот это не удалялось при компиляции с -O2, -O3 :)
for (int i = 0; i < 1000000; ++i) {
 int x = i * 2;
}
можно обмазать флагами всю функцию чтоб она без оптимизаций компилилась
источник

AF

Aidar Fattakhov in supapro.cxx
Eugene Krasnikov (ᴊɪɴ x)
Ну найти нужный кусочек я смогу, если что.
этот кусочек зависит остальных
источник

AF

Aidar Fattakhov in supapro.cxx
но бенчмаркать это какаято логическая ошибка
источник

EK

Eugene Krasnikov (ᴊɪ... in supapro.cxx
Aidar Fattakhov
этот кусочек зависит остальных
От каких остальных?
Если я пишу, к примеру, i /= 5, то от чего это может зависеть?
источник

AF

Aidar Fattakhov in supapro.cxx
Eugene Krasnikov (ᴊɪɴ x)
От каких остальных?
Если я пишу, к примеру, i /= 5, то от чего это может зависеть?
например то как развернется цикл зависит не только от самого цикла
источник

AF

Aidar Fattakhov in supapro.cxx
там есть классический пример с убом и rm -rf показывающий что результат компиляции зависит от например инициализаторов какихто переменных в глоблаььной области в совсем других функциях
источник

EK

Eugene Krasnikov (ᴊɪ... in supapro.cxx
Aidar Fattakhov
например то как развернется цикл зависит не только от самого цикла
Я понимаю, что код вокруг влияет.
Но есть код, который мало от чего зависит.
Да и смотря что искать в этом коде.
источник

AF

Aidar Fattakhov in supapro.cxx
да сделайте зависимость выходных данных от входных и бенчмаркайте
источник

AF

Aidar Fattakhov in supapro.cxx
только входные сделайте тоже не статичными, иначе он в компильтайме посчитает всё
источник

EK

Eugene Krasnikov (ᴊɪ... in supapro.cxx
Aidar Fattakhov
но бенчмаркать это какаято логическая ошибка
Вот пример:

#include <iostream>
#include <windows.h>

volatile double y;

int main()
{
 double x = 0, delta = 1.74532925199432957692369e-7;
 DWORD c = GetTickCount();
 for (int i = 0; i < 36000000; ++i) {
   y = std::sin(x);
   x = x + delta;
 }
 c = GetTickCount() - c;
 std::cout << c;
 return 0;
}

и

#include <iostream>
#include <windows.h>

volatile double y;

double finit()
{
 __asm {
       finit
 }
}

double fsin(double x)
{
 __asm {
       fld     qword ptr x
       fsin
       fstp    st
 }
}

int main()
{
 double x = 0, delta = 1.74532925199432957692369e-7;
 finit();
 DWORD c = GetTickCount();
 for (int i = 0; i < 36000000; ++i) {
   y = fsin(x);
   x = x + delta;
 }
 c = GetTickCount() - c;
 std::cout << c;
 return 0;
}

Сравниваю скорость fsin и sse-реализации.
volatile здесь только мешает.
источник

AF

Aidar Fattakhov in supapro.cxx
эт че вминда чтоль
источник

EK

Eugene Krasnikov (ᴊɪ... in supapro.cxx
Да, это даже VC++.
источник

AF

Aidar Fattakhov in supapro.cxx
второе проиграет явно
источник

AF

Aidar Fattakhov in supapro.cxx
просто изза вставок __asm которые ломают знания компилятора о коде
источник

AF

Aidar Fattakhov in supapro.cxx
хотите тестировать такие вещи - пишите на ассемблере
источник

EK

Eugene Krasnikov (ᴊɪ... in supapro.cxx
Да там нечего ломать.
Второй проигрывает, но не из-за вставок.
источник

AF

Aidar Fattakhov in supapro.cxx
первый вероятно еще векторизуется
источник