Войти
ФлеймФорумПрограммирование

Одна из причин, почему я до сих пор не забросил VB6. (2 стр)

Страницы: 1 2 3 414 Следующая »
#15
13:48, 14 ноя. 2014

Отличный вброс. Ну и насчет векторизации я тоже недоумеваю давно

#16
13:49, 14 ноя. 2014

kipar
> По ссылке в #0 тоже распараллеливает, доводит до 0.7сек
Такой страшный говнокод у него. CUDA, господи. Я дописал одну строчку перед циклом:

#pragma omp parallel for reduction(+:res)
и стало 1.4 секунды
#17
13:51, 14 ноя. 2014

Aroch
> самое смешное почти во всех тестах результат теста разный

Одинаковый он,...  в зависимости от настроек, fp:fast одно значение, fp:precise другое... а автор статьи не умеет в одинаковые настройки сишечки и vb.  К слову, разницы в результате/времени выполнения между sin и sinf я не заметил.

Aroch
> Ну и да, очередной тест

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

#18
13:53, 14 ноя. 2014

0iStalker
> разницы в результате/времени выполнения между sin и sinf я не заметил.
sinf вроде всю жизнь был дефайном преобразовывающим результат sin() к float, а параметр к double.

#19
14:07, 14 ноя. 2014

entryway
> > По ссылке в #0 тоже распараллеливает, доводит до 0.7сек
> Такой страшный говнокод у него. CUDA, господи. Я дописал одну строчку перед циклом:
> #pragma omp parallel for reduction(+:res)
> и стало 1.4 секунды
А-а, так у него восемь ядер. У меня четыре. На восьми должно быть примерно как у него с простым как валенок кодом:

int main()
{
  double res=0.0;
  unsigned int dw = GetTickCount();
  #pragma omp parallel for reduction(+:res)
  for (int i = 1; i <= 200000000; i++)
    res+=sin((double)i);
  printf("Result: %f after %d", res, (GetTickCount()-dw));
}
#20
14:41, 14 ноя. 2014

А пояснить для тех кто не шарит? Железо уже не подходит для ВБ6?

#21
14:47, 14 ноя. 2014

Ren
> А пояснить для тех кто не шарит?

Представь соревнование  жонглёров, - тест первый - подбрасывают/ловят один предмет, много можно понять о мастерстве в данном случае? Вот и тут, точно такой же случай оценивается.

#22
14:49, 14 ноя. 2014

0iStalker
> Представь соревнование  жонглёров, - тест первый - подбрасывают/ловят один
> предмет, много можно понять о мастерстве в данном случае? Вот и тут, точно
> такой же случай оценивается.
Да нет, то что одного теста недостаточно для выявления общей производительности, - это ясно. Статья то к чему ведет? Я дочитал до того что басик справился быстрее всех, а дальше пошло специальное слишком.

#23
17:28, 14 ноя. 2014

Ren
Он сказал что басик быстрее всех в однопоточке, потом взял и сделал в нем многопоточку, уделав матлаб. А потом решил сравнить с видеокартами, но видеокарты тоже слили, большей частью из-за того что не заточены под вычисление синуса двойной точности и при вычислении длящемся секунду разные служебные операции начинают вносить вклад.

#24
18:32, 14 ноя. 2014

Странно, что кто-то не начал пилить свой самый точный и самый быстрый синус двойной точности.

#25
20:50, 14 ноя. 2014

Бейсик, наверное, использует fsin инструкцию, которая не точная. Поэтому работает быстро и с ошибками.
Из дизасм кода на бейсике?

#26
23:43, 14 ноя. 2014

Mingw с оптимизациями отработал быстрее теста Mikle на пару секунд.
Кроме добавления math.h код не трогал, но таки да — от VB6 такой прыткости не ожидал.

#27
23:46, 14 ноя. 2014

CPU Disasm
Address                  Hex dump          Command                                  Comments
00401680                /$  83EC 0C      SUB ESP,0C                              ; SinTest.00401680(guessed void)
00401683                |.  33C0          XOR EAX,EAX
00401685                |.  894424 04    MOV DWORD PTR SS:[LOCAL.1],EAX
00401689                |.  894424 08    MOV DWORD PTR SS:[LOCAL.0],EAX
0040168D                |.  DD4424 04    FLD QWORD PTR SS:[LOCAL.1]
00401691                |.  B8 01000000  MOV EAX,1
00401696                |.  894424 00    MOV DWORD PTR SS:[LOCAL.2],EAX
0040169A                |>  DB4424 00    /FILD DWORD PTR SS:[LOCAL.2]
0040169E                |.  40            |INC EAX
0040169F                |.  3D 00C2EB0B  |CMP EAX,0BEBC200
004016A4                |.  894424 00    |MOV DWORD PTR SS:[LOCAL.2],EAX
004016A8                |.  D9FE          |FSIN
004016AA                |.  DEC1          |FADDP ST(1),ST
004016AC                |.^ 7E EC        \JLE SHORT 0040169A
004016AE                |.  83C4 0C      ADD ESP,0C
004016B1                \.  C3            RETN

#28
0:01, 15 ноя. 2014

the trick
Простой код без излишеств но и без хитростей

#29
0:15, 15 ноя. 2014

Можно перевернуть цикл и внутри вместо константы будет сравнение с нулем, хотя вряд ли это даст больше доли процента. И от перестановки результат может фатально измениться, плавающий питух он такой, ни один компилятор на такое не пойдет.

Страницы: 1 2 3 414 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.