![]() |
Страницы (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)
ComradeAndrew
Ну в 2013 ты же как-то отключил?
В 2010 в настройках можно выбрать тулсет. На v100 используется FPU, если явно не включить SSE настройкой /arch. То же самое поведение у GCC/MinGW.
__________________
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)
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)
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)
Ну странно, почему он не хочет использовать fcomi/fcmovb? Полагает, что распределяет нагрузку между целочисленным и floating-point модулями?
А какой вариант быстрее у тебя оказывается? Можешь по-быстрому спрофилировать, плз?
__________________
XaeroX
Ну, если я правильно понимаю как это делается, то смотрим.
Проверим на v140
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 | } |
Эм... Спасибо, конечно, но я имел в виду - спрофилировать FPU-код из разных тулсетов.
А что, у тебя процессор держит AVX и даже AVX2? Какой у тебя?
__________________
У меня Intel Core i5-4210U( 64-bit, SSE4.1/4.2, AVX 2.0 ).
Ну, FPU на всех трех почти одинаково.
Тот же тест на них:
v140 : 3355ms
v120 : 3530ms
v100 : 3267ms
Учитывая прошлый результат v140 - разницы нет.
Или это не так делается?
У меня тоже Core-i5, но AVX нет.
Может, потому, что он появился в 2011 году, а процессор я купил в 2009? Кто его знает...
__________________
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
В общем, "ужасы нашего городка". Интел юзать нельзя, опен64 только под 64...
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Какие процессоры не поддерживают SSE ?
MegaGovnoCoder
Все до Pentium 3.
Вот, например, сейчас у меня тут комп с Celeron 466, SSE не поддерживает.
На помойку пора таким процессорам зачем из-за них отключать SSE
MegaGovnoCoder
Можно, я сам решу, какие процессоры мне отправлять на помойку, а какие нет?
Можно? Спасибо.
Ладно, удачи тогда в оптимизации.
Конечно компилятор не рассчитан на оптимизацию кода для такого мусора)))
Твои же слова, что сейчас 2015 год, а компилятор не умеет оптимизировать код для процессоров ниже Pentium 3. А смысл в оптимизации для этих "отходов"?
Временная зона GMT. Текущее время 13:01. | Страницы (3): « 1 [2] 3 » Показать все 43 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024