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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Есть ли смысл написания на С (не на С++)? нейронные сети... 
V
    Опции темы
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   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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