Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Есть ли смысл написания на С (не на С++)? нейронные сети... 
V
    Опции темы
Proger10
Дата 26.3.2009, 03:18 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.12.2008

Репутация: нет
Всего: нет



Скажите пожалуйста, если сравнивать по работоспособности С и С++.. оправдана ли будет скорость выполнения программы против скорости её написания? smile

Использовать предполагается в нейронных сетях (это довольно сложные математические структуры, с огромным количеством вычислений). В отдельных местах я буду допускать (практически наверняка) использование ассемблеровых вставок для ускорения работы.

Там просто порой есть много тупых действий smile ну как например - перемножить массив из 100.000 чисел на какое-то одно число.. и таких большое число циклов. Т.е. они не так сложно реализуемы на асме, но выигрыш в производительности, я полагаю, будет выше временных затрат.
PM MAIL   Вверх
nerezus
Дата 26.3.2009, 03:29 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Proger10, и за счет чего же будет выигрыш в производительности при перемножении массива на число для C относительно C++?
Кто тебе это сказал?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Proger10
Дата 26.3.2009, 03:37 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.12.2008

Репутация: нет
Всего: нет



Ну в общем-то я про это и спрашиваю, будет ли smile
Это я в качестве примера привёл возможность использования в такой ситуации асма smile

Вообще я слышал, что С работает быстрее С++. Но честно говоря, понятия не имею почему. Чем он действительно быстрее-то? На чём С выигрывает перед С++?

Это сообщение отредактировал(а) Proger10 - 26.3.2009, 03:37
PM MAIL   Вверх
jonie
Дата 26.3.2009, 08:04 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



Цитата

Вообще я слышал, что С работает быстрее С++.
как может работать один язык быстрее другого?

если, конечно, подумать, то да, C++ использует всякие новомодные штуки вроде виртуальных функций (если, конечно, они у вас будут). Но проигрыш на современных процессорах может быть очеь и очень незначительным...

Скорость падает не от компилированного кода, а от кривых алгоритмов и их кривой реализации... так что не заморачивайтесь - пишите на чем угодно.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
GoldFinch
Дата 26.3.2009, 09:27 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



jonie, скорость падает еще и от кривого компилятора
так что с точки зрения быстродействия писать нада не на каком-то языке, а под конкретный компилятор 
PM MAIL ICQ   Вверх
Lazin
Дата 26.3.2009, 10:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



Цитата

Есть ли смысл написания на С (не на С++)?
нету

Добавлено через 40 секунд
есть смысл написать это на haskell =)
PM MAIL Skype GTalk   Вверх
GoldFinch
Дата 26.3.2009, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



Lazin, у haskell'а быстродействие больше чем у С\С++ ? ниверю
PM MAIL ICQ   Вверх
mes
Дата 26.3.2009, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(GoldFinch @  26.3.2009,  09:15 Найти цитируемый пост)
Lazin, у haskell'а быстродействие больше чем у С\С++ ? ниверю 

я думаю предложение Haskella было не из за преимуществ в скорости (но думаю что он не сильно отстает от Си/Cpp), 
а как более удобный для решения такого ряда задач (н.с.) , так как он  функциональный.

Это сообщение отредактировал(а) mes - 26.3.2009, 10:40


--------------------
PM MAIL WWW   Вверх
Lazin
Дата 26.3.2009, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



зависит от реализации, у GHC быстродействие ниже чем у большинства компиляторов с++, у JHC в среднем не меньше, но он еще сырой
чисто теоретически, производительность кода написанного на haskell, может быть даже выше, чем у с++ кода из-за частичного применения ф-й, например, пишешь ты ф-ю на с++
Код

int SomeCalculation(int x, int y);

при вызове этой ф-ии, всегда будут передаваться параметры в стек, всегда будет происходить полное вычисление ф-ии(если она не подставляемая)... в хаскеле все может быть иначе
Код

SomeCalculation :: Int -> Int -> Int
SomeCalculation x y = ....

что можно представить как 
Код

SomeCalculation :: Int -> (Int -> Int)

ф-ю принимающую один аргумент и возвращающую ф-ю принимающую один аргумент и возвращающую Int
чисто теоритичесски, компилятор, или даже рантайм, может генерировать такие частично примененные ф-ии, вместо одной общей реализации, что может привести к увеличению производительности
PM MAIL Skype GTalk   Вверх
xvr
Дата 26.3.2009, 10:57 (ссылка) |   (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(Proger10 @ 26.3.2009,  03:18)
Там просто порой есть много тупых действий smile ну как например - перемножить массив из 100.000 чисел на какое-то одно число.. и таких большое число циклов. Т.е. они не так сложно реализуемы на асме, но выигрыш в производительности, я полагаю, будет выше временных затрат.

Будет проигрыш в производительности  smile Хороший оптимизирующий компилятор сможет сделать такой цикл более производительным, чем тупо написанный на асм. На асм можно написать цикл более производительно, чем сможет сделать компилятор, но для этого надо быть экспертом по performance analysis, а таких считанные единицы. Кроме того, компилятор даже может этот цикл распараллелить (если он умеет), что даст привар на всяких Core Duo и пр.
А С/С++ дадут одинаковую производительность, если не использовать С++ run-time конструкции в узких местах.

PM MAIL   Вверх
kamre
Дата 26.3.2009, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 24.3.2006

Репутация: 2
Всего: 13



Цитата(Lazin @ 26.3.2009,  10:37)
чисто теоритичесски, компилятор, или даже рантайм, может генерировать такие частично примененные ф-ии, вместо одной общей реализации, что может привести к увеличению производительности

Ну в C++ компилятор также может заинлайнить все вызовы, как, например, при сортировке через std::sort. А в runtime, конечно, уже никак. 

Чтобы в runtime инлайнить функции нужен уже какой-то JIT компилятор. Вот он может, чисто теоретически, проанализировать весь загруженный на тот момент код и заинлайнить вызов виртуальной функции. 

Да и в number crunching вроде не принято пользоваться JIT компиляторами, там в основном Fortran/C/C++.
PM MAIL   Вверх
GoldFinch
Дата 26.3.2009, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



вроде бы это не та задача, где надо оптимизировать в run-time
да и передачи параметров через стек можно избежать, если юзать __fastcall
а на асме можно например оптимизировать то что не оптимизировал компилятор, может распараллеливает он хорошо, зато в других местах генерит очень неоптимальный код, кроме того компиляторы С++ не поддерживают достаточно большое количество полезных инструкций х86

PM MAIL ICQ   Вверх
Lazin
Дата 26.3.2009, 12:33 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



Цитата(GoldFinch @  26.3.2009,  12:11 Найти цитируемый пост)
кроме того компиляторы С++ не поддерживают достаточно большое количество полезных инструкций х86

OMFG!!1 ну надо-же, это каких интересно?

Цитата(GoldFinch @  26.3.2009,  12:11 Найти цитируемый пост)
вроде бы это не та задача, где надо оптимизировать в run-time
да и передачи параметров через стек можно избежать, если юзать __fastcall
it depends... во первых, любая задача может выиграть от оптимизации в рантайме, во вторых, помимо оптимизации в рантайме(которую пока еще никто не делает), у компилятора haskell предостаточно средств для оптимизации, так-как переменных нет, mutable state - отсутствует, по типу(!) функции можно определить будет ли эта ф-я изменять состояние чего-либо или нет и так далее...
это просто другой подход к решению проблемы, программируя на с++(си, паскале) ты не столько работаешь над алгоритмом, сколько над его реализацией(в этой переменной у нас будте одно значение, в той - другое, потом мы делаем с ними следующее ... и вон в той переменной оказывается результат); программируя на функциональных языках(а особенно на haskell) используют совершенно другой подход, обычно ФП программа это императивная программа наоборот, мы не определяем как будет вычисляться результат конкретно, вместо этого мы вводим набор правил для получения результата, как конкретно и в какой последовательности это будет реализовано уже не важно smile 
ну и определять вручную как вызывать ту или иную ф-ию, передавать параметры через стэк или регистры, это прошлый век, даже для с++ smile 
PM MAIL Skype GTalk   Вверх
GoldFinch
Дата 26.3.2009, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



Lazin, это обсуждалось уже много раз, покажи С++ код без асм вставок, который приведет к генерации bswap, fldpi/fldlg2/fld*, и много чего еще
в msvc есть intrinsic'и но далеко не для всех инструкций

Добавлено через 4 минуты
Цитата(Lazin @  26.3.2009,  12:33 Найти цитируемый пост)
так-как переменных нет

на уровне инструкций процессора тоже нет переменных, и практика показывает, что нет способа быстрее способа сложить два произвольных числа чем add reg,reg

PM MAIL ICQ   Вверх
mes
Дата 26.3.2009, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(GoldFinch @  26.3.2009,  12:28 Найти цитируемый пост)
на уровне инструкций процессора тоже нет переменных, и практика показывает, что нет способа быстрее способа сложить два произвольных числа чем add reg,reg

речь идет о  разнице между (рантайм) константами и переменными в сложных выражениях. Первое легко подается оптимизации.  



--------------------
PM MAIL WWW   Вверх
Acer
Дата 26.3.2009, 22:18 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

Репутация: нет
Всего: 8



Цитата(GoldFinch @ 26.3.2009,  08:27)
кривого компилятора

А какой это - кривой?  smile 
PM MAIL   Вверх
Proger10
Дата 26.3.2009, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.12.2008

Репутация: нет
Всего: нет



Писать я кстати буду под компайлер GNU GCC. (линуксовый)

Понятно. Значит действительно нужно не заморачиваться, а писать на С++. Это и чуток проще заодно smile
PM MAIL   Вверх
GoldFinch
Дата 26.3.2009, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



Цитата(Acer @  26.3.2009,  22:18 Найти цитируемый пост)
А какой это - кривой?
а в какой не ткни - то кривой, msvc например

скомпили какойнить код сложнее helloworld и увидишь

Это сообщение отредактировал(а) GoldFinch - 26.3.2009, 22:54
PM MAIL ICQ   Вверх
Proger10
Дата 26.3.2009, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.12.2008

Репутация: нет
Всего: нет



GoldFinch, а G++ кривой? 
Какой, по-вашему, прямой?
PM MAIL   Вверх
Lazin
Дата 27.3.2009, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



По версии GoldFinch - все кривые, он сам как компилятор, пишет все на ассемблере, и знает какой код процессор будет быстрее выполнять, performance guru одним словом smile

Добавлено через 1 минуту и 31 секунду
Цитата(Proger10 @  26.3.2009,  23:37 Найти цитируемый пост)
Какой, по-вашему, прямой?

любой современный, более или менее распространенный с++ компилятор, другого все-равно не дано
PM MAIL Skype GTalk   Вверх
Proger10
Дата 27.3.2009, 01:45 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.12.2008

Репутация: нет
Всего: нет



Ну G++ (gcc) относится к хорошим компайлерам или не очень? Зато свободный.. а то компилятор от visual studio денег стоит, а компилить на нелицухе как-то не модно smile
PM MAIL   Вверх
nerezus
Дата 27.3.2009, 02:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Proger10, кто тебе сказал, что он денег стоит?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Proger10
Дата 27.3.2009, 04:04 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.12.2008

Репутация: нет
Всего: нет



Не уж-то майкрософтовский и бесплатный? Эти понятия разве совместимы? smile
PM MAIL   Вверх
nerezus
Дата 27.3.2009, 04:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Proger10, у MS КУЧА бесплатных продуктов.
Например Visual Studio Express(основное отличие - возможность ставить сторонние плагины. Остальные отличия ты не заметишь)


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
jonie
Дата 27.3.2009, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



Цитата

например, пишешь ты ф-ю на с++код C++
  
Код

int SomeCalculation(int x, int y);


при вызове этой ф-ии, всегда будут передаваться параметры в стек
не обязательно (даже без инлайна). в x64 параметры не будут передаваться в стеке.... а можно и в х86 сделать __fastcall ....

Цитата

Цитата

Цитата(Acer @  26.3.2009,  22:18 )
А какой это - кривой?

а в какой не ткни - то кривой, msvc например
скомпили какойнить код сложнее helloworld и увидишь
хренасе. MSVC по оптимизации кода очень не плох, и врядли g++ его догонит... в общем GoldFinch сказал что хреновый - примеры где он лоханулся в студию!

Цитата

а то компилятор от visual studio денег стоит, а компилить на нелицухе как-то не модно 
Platform SDK бесплатен. В него входит MSVC компилер и, собственно, хедеры....


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
GoldFinch
Дата 27.3.2009, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



jonie, примеры кривости кодогенератора msvc уже приводились, например кривая передача значений вещественных переменных в функции
Код

#pragma comment(linker,"/entry:main")

int foo(float); 

int main () {
    return foo(1.1f);
};

int foo(float x) {  //какаято реализация foo, которая не заинлайнится
    if (x!=0.0f) return foo(x/2);     
};

то что конмпелировалось
Код

_main proc near

var_4= dword ptr -4

fld     ds:__real@3f8ccccd ; dd 1.1f
push    ecx             ; reserves memory for float arg of foo
fstp    [esp+4+var_4]
call    foo(float)
add     esp, 4
retn
_main endp


а должно было бы скомпилироваться так
Код

_main proc near
push    1.1f
call    foo(float)
add     esp, 4
retn
_main endp


еще у msvc багнутый встроенный ассемблер %)
PM MAIL ICQ   Вверх
xvr
Дата 27.3.2009, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(GoldFinch @ 27.3.2009,  09:34)
jonie, примеры кривости кодогенератора msvc уже приводились, например кривая передача значений вещественных переменных в функции
Код

#pragma comment(linker,"/entry:main")

int foo(float); 

int main () {
    return foo(1.1f);
};

int foo(float x) {  //какаято реализация foo, которая не заинлайнится
    if (x!=0.0f) return foo(x/2);     
};

то что конмпелировалось
Код

_main proc near

var_4= dword ptr -4

fld     ds:__real@3f8ccccd ; dd 1.1f
push    ecx             ; reserves memory for float arg of foo
fstp    [esp+4+var_4]
call    foo(float)
add     esp, 4
retn
_main endp


а должно было бы скомпилироваться так
Код

_main proc near
push    1.1f
call    foo(float)
add     esp, 4
retn
_main endp


еще у msvc багнутый встроенный ассемблер %)

Ох уж эти сказочники smile
Цитата

cl /c /Fa /Ox /G6 t.c

Результат
Код

    TITLE    t.c
    .386P
include listing.inc
if @Version gt 510
.model FLAT
else
_TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT    ENDS
_DATA    SEGMENT DWORD USE32 PUBLIC 'DATA'
_DATA    ENDS
CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST    ENDS
_BSS    SEGMENT DWORD USE32 PUBLIC 'BSS'
_BSS    ENDS
_TLS    SEGMENT DWORD USE32 PUBLIC 'TLS'
_TLS    ENDS
FLAT    GROUP _DATA, CONST, _BSS
    ASSUME    CS: FLAT, DS: FLAT, SS: FLAT
endif
PUBLIC    _foo
PUBLIC    _main
EXTRN    __fltused:NEAR
_TEXT    SEGMENT
_main    PROC NEAR
; File t.c
; Line 4
    push    1066192077                ; 3f8ccccdH
    call    _foo
    add    esp, 4
; Line 5
    ret    0
_main    ENDP
_TEXT    ENDS
PUBLIC    __real@4@00000000000000000000
PUBLIC    __real@4@3ffe8000000000000000
;    COMDAT __real@4@00000000000000000000
; File t.c
CONST    SEGMENT
__real@4@00000000000000000000 DD 000000000r    ; 0
CONST    ENDS
;    COMDAT __real@4@3ffe8000000000000000
CONST    SEGMENT
__real@4@3ffe8000000000000000 DD 03f000000r    ; 0.5
CONST    ENDS
_TEXT    SEGMENT
_x$ = 8
_foo    PROC NEAR
; File t.c
; Line 7
    fld    DWORD PTR _x$[esp-4]
    fcom    DWORD PTR __real@4@00000000000000000000
    fnstsw    ax
    test    ah, 64                    ; 00000040H
    jne    SHORT $L540
$L533:
    fmul    DWORD PTR __real@4@3ffe8000000000000000
    fcom    DWORD PTR __real@4@00000000000000000000
    fnstsw    ax
    test    ah, 64                    ; 00000040H
    je    SHORT $L533
$L540:
    fstp    ST(0)
; Line 8
    ret    0
_foo    ENDP
_TEXT    ENDS
END
Строки 27-29
cl:
Цитата

Microsoft ® 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright © Microsoft Corp 1984-1998. All rights reserved.
 (из 2003 студии)
Алгоритм измерения кривизны рук знаешь?  smile 
PM MAIL   Вверх
GoldFinch
Дата 27.3.2009, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



xvr, а у меня
Код

D:\_bin\msvc2008\VC\bin>cl
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

из 2008 студии, удали свое старье и поставь новую версию)

листенг:
Код

D:\_bin\msvc2008\VC\bin>cl /c /Fa /Ox /G6 t.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

cl : Command line warning D9002 : ignoring unknown option '/G6'
t.c
d:\_bin\msvc2008\vc\bin\t.c(8) : warning C4715: 'foo' : not all control paths re
turn a value

D:\_bin\msvc2008\VC\bin>type t.asm
; Listing generated by Microsoft (R) Optimizing Compiler Version 15.00.30729.01


        TITLE   D:\_bin\msvc2008\VC\bin\t.c
        .686P
        .XMM
        include listing.inc
        .model  flat

INCLUDELIB LIBCMT
INCLUDELIB OLDNAMES

PUBLIC  __real@3fe0000000000000
PUBLIC  __real@00000000
PUBLIC  _foo
EXTRN   __fltused:DWORD
;       COMDAT __real@3fe0000000000000
; File d:\_bin\msvc2008\vc\bin\t.c
CONST   SEGMENT
__real@3fe0000000000000 DQ 03fe0000000000000r   ; 0.5
CONST   ENDS
;       COMDAT __real@00000000
CONST   SEGMENT
__real@00000000 DD 000000000r                   ; 0
; Function compile flags: /Ogtpy
CONST   ENDS
_TEXT   SEGMENT
_x$ = 8                                                 ; size = 4
_foo    PROC
; Line 7
        fldz
        fld     ST(0)
        fld     DWORD PTR _x$[esp-4]
        fucom   ST(1)
        fnstsw  ax
        fstp    ST(1)
        test    ah, 68                                  ; 00000044H
        jnp     SHORT $LN8@foo
        fld     QWORD PTR __real@3fe0000000000000
        jmp     SHORT $LN4@foo
$LN12@foo:
        fxch    ST(1)
$LN4@foo:
        fmul    ST(1), ST(0)
        fxch    ST(1)
        fstp    DWORD PTR _x$[esp-4]
        fld     ST(1)
        fld     DWORD PTR _x$[esp-4]
        fucom   ST(1)
        fnstsw  ax
        fstp    ST(1)
        test    ah, 68                                  ; 00000044H
        jp      SHORT $LN12@foo
        fstp    ST(0)
        fstp    ST(1)
        fstp    ST(0)
; Line 8
        ret     0
$LN8@foo:
; Line 7
        fstp    ST(0)
        fstp    ST(0)
; Line 8
        ret     0
_foo    ENDP
_TEXT   ENDS
PUBLIC  __real@3f8ccccd
PUBLIC  _main
;       COMDAT __real@3f8ccccd
CONST   SEGMENT
__real@3f8ccccd DD 03f8ccccdr                   ; 1.1
; Function compile flags: /Ogtpy
CONST   ENDS
_TEXT   SEGMENT
_main   PROC
; Line 4
        fld     DWORD PTR __real@3f8ccccd
        push    ecx
        fstp    DWORD PTR [esp]
        call    _foo
        add     esp, 4
; Line 5
        ret     0
_main   ENDP
_TEXT   ENDS
END

D:\_bin\msvc2008\VC\bin>


Это сообщение отредактировал(а) GoldFinch - 27.3.2009, 12:51
PM MAIL ICQ   Вверх
xvr
Дата 27.3.2009, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Нет уж увольте - ищите, чему у нее теперь соотвествует /G6 и как теперь выглядит /Ox (у меня это /Ogityb1 /Gs, в 2008 - /Ogtpy судя по листингу)
Цитата

cl : Command line warning D9002 : ignoring unknown option '/G6'
, потом поговорим о кривых компиляторах  smile 
PM MAIL   Вверх
semibug
Дата 31.3.2009, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 27.3.2009

Репутация: нет
Всего: нет



С практической стороны возможно будет быстрее, безглючнее и дешевле написать на плюсах без всяких асмовых вставок.
Скорость догонять железом ( в тяжелых случаях построить распределённую систему аля Folder@Home smile ).
Прошу не считать пост холиваром smile .
PM   Вверх
Lazin
Дата 31.3.2009, 23:02 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



Цитата(semibug @  31.3.2009,  22:17 Найти цитируемый пост)
в тяжелых случаях построить распределённую систему аля Folder@Home

[irony]
о да, это самый простой и дешевый вариант, доступный любому smile 
[/irony]
PM MAIL Skype GTalk   Вверх
GoldFinch
Дата 1.4.2009, 08:23 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



Цитата(semibug @  31.3.2009,  23:17 Найти цитируемый пост)
Скорость догонять железом

алюминием.
если руки кривые, конечно проще склепать тормознутую прогу, объявить нереальные системные требования, и сказать что это прога high-end класса

PM MAIL ICQ   Вверх
nerezus
Дата 1.4.2009, 09:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Цитата

алюминием.
если руки кривые, конечно проще склепать тормознутую прогу, объявить нереальные системные требования, и сказать что это прога high-end класса
 Если твоя ЗП меньше цены аренды железа - не думай, что другие тоже нахаляву работают ;)


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
bsa
Дата 1.4.2009, 11:45 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Считаю, что оптимальнее всего написать на С++, затем, если скорость не устроит, прогнать через профайлер (только нужно прогонять прогу скомпилированную с опциями (для gcc): -O3 -g -pg - максимальная оптимизация, отладочная информация, информация для профилирования), а затем оптимизировать узкие места всеми доступными способами.
PM   Вверх
jonie
Дата 1.4.2009, 23:16 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



GoldFinch а у меня вот так скомпилолось (vc9):
Код

    movss    xmm0, DWORD PTR __real@3f0ccccd
    jmp    ?foo@@YAHM@Z                ; foo

мне застрелиться? (оптимизация SSE2)

можно и так получить:
Код

    mov    DWORD PTR [esp], 1066192077        ; 3f8ccccdH
    call    ?foo@@YAHM@Z                ; foo
    add    esp, 4

опция /fp:strict


так где лоханулся компилятор-то?


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
GoldFinch
Дата 2.4.2009, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



Цитата(jonie @  2.4.2009,  00:16 Найти цитируемый пост)
    mov    DWORD PTR [esp], 1066192077        ; 3f8ccccdH
    call    ?foo@@YAHM@Z                ; foo
    add    esp, 4

не может такого быть, это не полный код main


и mov [esp],imm32 хуже чем push imm32

Это сообщение отредактировал(а) GoldFinch - 2.4.2009, 09:01
PM MAIL ICQ   Вверх
GoldFinch
Дата 2.4.2009, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



Цитата(jonie @  2.4.2009,  00:16 Найти цитируемый пост)
(оптимизация SSE2)

речь шла о функциях принимающих float через стек
PM MAIL ICQ   Вверх
bsa
Дата 2.4.2009, 11:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196




M
bsa
Давайте вернёмся к теме обсуждения.

PM   Вверх
GoldFinch
Дата 2.4.2009, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



bsa, вроде бы тема себя уже исчерпала к середине 1й страницы
PM MAIL ICQ   Вверх
jonie
Дата 2.4.2009, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



GoldFinch скмпилируй да посмотри


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
GoldFinch
Дата 2.4.2009, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



jonie, чего посмотри? ты там не всю функцию привел %)
сам посмотри ^^

Это сообщение отредактировал(а) GoldFinch - 2.4.2009, 19:21
PM MAIL ICQ   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1014 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.