HLFX.Ru Forum Страницы (3): « 1 [2] 3 »
Показать все 43 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- Почему MSVC2010 генерирует такой дерьмовый код? (https://hlfx.ru/forum/showthread.php?threadid=4598)


Отправлено XaeroX 09-05-2015 в 05:43:

ComradeAndrew
Ну в 2013 ты же как-то отключил?
В 2010 в настройках можно выбрать тулсет. На v100 используется FPU, если явно не включить SSE настройкой /arch. То же самое поведение у GCC/MinGW.

__________________

xaerox on Vivino


Отправлено ComradeAndrew 09-05-2015 в 07:02:

XaeroX
Не. На тулсете v120, как и на v100 я ничего не менял, а по дефолту там настройка /arch (not set).
Нашел где эта настройка. Итак, давай теперь по порядку.
Везде оптимизация /O2:

Platform toolset v100
/arch (not set)

code:
008A1013 fldz 008A1015 fcom dword ptr [f] 008A1018 add esp,8 008A101B fnstsw ax 008A101D test ah,5 008A1020 jnp main+27h (08A1027h) 008A1022 fstp dword ptr [f] 008A1025 jmp main+29h (08A1029h) 008A1027 fstp st(0)


Platform toolset v120
No Enhanced Instructions (/arch:IA32)
code:
0002101F fldz 00021021 add esp,8 00021024 fld dword ptr [f] 00021027 fcom st(1) 00021029 fnstsw ax 0002102B test ah,41h 0002102E je main+3Ah (02103Ah) 00021030 fstp st(0) 00021032 fstp dword ptr [f] 00021035 fld dword ptr [f] 00021038 jmp main+3Ch (02103Ch) 0002103A fstp st(1)


Platform toolset v140
No Enhanced Instructions (/arch:IA32)
code:
008210C3 fldz 008210C5 add esp,8 008210C8 fld dword ptr [esp+38h] 008210CC fcom st(1) 008210CE fnstsw ax 008210D0 test ah,41h 008210D3 je main+41h (08210E1h) 008210D5 fstp st(0) 008210D7 fstp dword ptr [esp+38h] 008210DB fld dword ptr [esp+38h] 008210DF jmp main+43h (08210E3h) 008210E1 fstp st(1)


Настройки "Enable Enhanced Instructions":
На v100 3 настройки:


На v120 и v140 6 настроек:


Отправлено XaeroX 09-05-2015 в 08:33:

Ну странно, почему он не хочет использовать fcomi/fcmovb? Полагает, что распределяет нагрузку между целочисленным и floating-point модулями?
А какой вариант быстрее у тебя оказывается? Можешь по-быстрому спрофилировать, плз?

__________________

xaerox on Vivino


Отправлено ComradeAndrew 09-05-2015 в 09:13:

XaeroX
Ну, если я правильно понимаю как это делается, то смотрим.
Проверим на v140

C++ Source Code:
1
#include <stdio.h>
2
#include <stdlib.h>
3
 
4
#ifndef max
5
#define max(a,b)            (((a) > (b)) ? (a) : (b))
6
#endif
7
 
8
int main(int argc, char** argv)
9
{
10
  float f = 0;
11
  int i;
12
  int iterations = (int)atoi(argv[1]);
13
  for (i = 0; i < iterations; i++) {
14
    f += (i%2) ? i: -i;
15
    f = max(f, 0.0f);
16
  }
17
  printf ("%f\n", f);
18
 
19
  return 0;
20
}

На вход даем 1000000000 (10^9)

Среднее время 5 таких прогонов:


Отправлено XaeroX 09-05-2015 в 12:47:

Эм... Спасибо, конечно, но я имел в виду - спрофилировать FPU-код из разных тулсетов.
А что, у тебя процессор держит AVX и даже AVX2? Какой у тебя?

__________________

xaerox on Vivino


Отправлено ComradeAndrew 09-05-2015 в 13:47:

У меня Intel Core i5-4210U( 64-bit, SSE4.1/4.2, AVX 2.0 ).

Ну, FPU на всех трех почти одинаково.
Тот же тест на них:
v140 : 3355ms
v120 : 3530ms
v100 : 3267ms

Учитывая прошлый результат v140 - разницы нет.

Или это не так делается?


Отправлено XaeroX 09-05-2015 в 14:50:

У меня тоже Core-i5, но AVX нет.
Может, потому, что он появился в 2011 году, а процессор я купил в 2009? Кто его знает...

Цитата:
ComradeAndrew писал:
Ну, FPU на всех трех почти одинаково.

Понятно, спасибо. Похоже, в 2010 всё-таки баг.

__________________

xaerox on Vivino


Отправлено ~ X ~ 16-05-2015 в 15:06:

Цитата:
XaeroX писал:
А то, что вы хотите поддерживать процессоры без SSE - это ваши глубоко личные проблемы.

Я, конечно, не стану Дядей Мишей и на ВС6 не пересяду после такого. Но есл получится мод компилить мингвом, то так тому и быть.

Кстати, ЕМНИП, кто-то (оп) очень любил десяточку и мне её жаоко рекомендовал ))))))))))

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 16-05-2015 в 15:58:

Цитата:
~ X ~ писал:
Кстати, ЕМНИП, кто-то (оп) очень любил десяточку и мне её жаоко рекомендовал

Я рекомендовал микрософтовский компилятор как таковой. В целом-то он более быстрый код генерит. Я собирал старую волатилу мингвом и десяткой, в десятке, по ощущениям, было немного быстрее. То есть там, вероятно, есть другие моменты, которые реализованы лучше, чем в мингве.

__________________

xaerox on Vivino


Отправлено ~ X ~ 16-05-2015 в 16:34:

В общем, "ужасы нашего городка". Интел юзать нельзя, опен64 только под 64...

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено MegaGovnoCoder 14-09-2015 в 15:55:

Какие процессоры не поддерживают SSE ?


Отправлено XaeroX 14-09-2015 в 16:08:

MegaGovnoCoder
Все до Pentium 3.
Вот, например, сейчас у меня тут комп с Celeron 466, SSE не поддерживает.


Отправлено MegaGovnoCoder 14-09-2015 в 16:32:

На помойку пора таким процессорам зачем из-за них отключать SSE


Отправлено XaeroX 14-09-2015 в 16:59:

MegaGovnoCoder
Можно, я сам решу, какие процессоры мне отправлять на помойку, а какие нет?
Можно? Спасибо.


Отправлено MegaGovnoCoder 14-09-2015 в 17:31:

Ладно, удачи тогда в оптимизации.

Конечно компилятор не рассчитан на оптимизацию кода для такого мусора)))

Твои же слова, что сейчас 2015 год, а компилятор не умеет оптимизировать код для процессоров ниже Pentium 3. А смысл в оптимизации для этих "отходов"?


Временная зона GMT. Текущее время 13:01. Страницы (3): « 1 [2] 3 »
Показать все 43 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024