тест C++ vs ASM

Тема в разделе "WASM.HEAP", создана пользователем GoldFinch, 10 дек 2008.

  1. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Имхо всё таки с точки зрения прогресса в программировании библиотеки стандартных функций, в том числе графических лучше писать на асме и не экономить на зарплате оптимизаторов ибо эти библиотеку юзаются очень подолгу, а значит время их разработки/доработки некритично, кросплатформенность тоже некритична, т.к. они в любом случае сильно платформозависимы, а вот скорость/объем кода критичны опять таки потому, что от них зависит масса других программ. Другое дело прикладное программирование использующее эти хорошие билиотеки - там hilevel самое оно.
    Но М$ считает что прогресс это прежде всего железо, и потому программы должны быть всё горомаднее и тормознутеее, а лучший способ добиться такого прогресса есно лежит через создание соответсвующих стандартных библиотек :)))
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Y_Mur
    подпишусь под каждым словом
     
  3. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    Y_Mur, GoldFinch
    сколько в жизни вы напесали библиотек стандартных функций, в том числе графических? ^_^

    ps: такое ощущение, что здесь каждый второй -- какой-нибудь программист AI, игровой логики, рендеринга итд, где быстродействие -- это то, о чем должна болеть голова. все в Blizzard работают штоле? O_o

    не в обиду естественно. никого не хочу задеть.
     
  4. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    varnie
    Не будем разводить холивар, но из того, что мыслящих как Вы большинство не следует, что именно Ваш образ мышления правильный ;) а опыт и путь у каждого свой и если человек сейчас не может предьявить готовый результат во всей красе, то это не значит что у него нет определённых наработок из которых через некоторое время получится то о чём он пока говорит в общем виде ;) и не значит что этот результат будет хуже чем у тех кто чего-то уже добился придерживаясь Вашей точки зрения.
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    GoldFinch, Y_Mur
    По-моему, тема заключалась не в том, кто быстрее и как быстрее. А в том как нагадить, чтобы компилятор не разгрёб

    (как личное мнение: +1 varnie)
     
  6. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    вобщем-то алгоритм я выбрал, без подвохов,
    но я непротив продолжения холивара
     
  7. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Great
    Пришёл порутчик и всё опошлил :))
     
  8. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    Ну опустить GСС++ довольно сложно, ибо даже по дефайнам с built-in асмом он рвёт любой асмЪ... да и оптимайзер довольно крут..
    Например такая прожка для выводу строки идентификации проца через CPUID

    Код (Text):
    1. #include <stdio.h>
    2. #define cpuid(index, eax, ebx, ecx, edx) \
    3.   asm volatile ("cpuid" \
    4.                 : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) \
    5.                 : "0" (index))
    6.  
    7. int main()
    8. {
    9.   char str [13];
    10.   int * ptr;
    11.   int eax, ebx, ecx, edx;
    12.  
    13.   cpuid(0, eax, ebx, ecx, edx);
    14.   ptr = (int*)&str[0];
    15. *ptr = ebx;
    16.   ptr = (int*)&str[4];
    17. *ptr = edx;
    18.   ptr = (int*)&str[8];
    19. *ptr = ecx;  
    20.   str[12]=0;
    21.   printf (str);
    22. }
    и его трансляция на асм
    Код (Text):
    1. _main:
    2.     push    ebp
    3.     mov eax, 16
    4.     mov ebp, esp
    5.     push    ebx
    6.     sub esp, 52
    7.     xor ebx, ebx
    8.     and esp, -16
    9.     call    __alloca
    10.     call    ___main
    11.     mov eax, ebx
    12. /APP
    13.     cpuid
    14. /NO_APP
    15.     mov DWORD PTR [ebp-40], ebx
    16.     lea eax, [ebp-40]
    17.     mov DWORD PTR [ebp-36], edx
    18.     mov DWORD PTR [ebp-32], ecx
    19.     mov BYTE PTR [ebp-28], 0
    20.     mov DWORD PTR [esp], eax
    21.     call    _printf
    22.     mov ebx, DWORD PTR [ebp-4]
    23.     xor eax, eax
    24.     leave
    25.     ret
    от так вот...

    эта, ссори.. почетал книшку по сям, наверно так лутше нада:
    Код (Text):
    1. cpuid(0, eax, ebx, ecx, edx);
    2. *(int*)(str) = ebx;
    3. *(int*)(str+4) = edx;
    4. *(int*)(str+8) = ecx;
    5.   str[12] = 0;
    6.   printf (str);
    но в принципе и это можно какнить задейфанеть, чтоб многабукоф не песать. да.
     
  9. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Маленький уточняющий вопрос - gcc по оптимизирующей способности сейчас лучше msvc? существенно лучше или чуть-чуть? насколько близок к интеловскому? вроде раньше везде писали, что он им ущественно уступает?
     
  10. rudik

    rudik Руденко Артём

    Публикаций:
    0
    Регистрация:
    6 дек 2006
    Сообщения:
    302
    Адрес:
    г. Харьков
    gcc уступает интелу и майкрософту.
     
  11. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    Y_Mur
    MSVC лучший из перечисленных. У меня при максимальных оптимизациях по скорости Интел выдавал код почти в 2 раза(!) жирнее и несколько тормознее чем msvc. Притом, что у Интела была заточка под текущий проц, а msvc генерировал generic-код. Возможно, Интел силён на коде, интенсивно юзающем вычисления с плавающей точкой.

    У GCC визуально оптимизация несколько слабее, чем у msvc. К тому же, отсутствует whole program optimization.
     
  12. rudik

    rudik Руденко Артём

    Публикаций:
    0
    Регистрация:
    6 дек 2006
    Сообщения:
    302
    Адрес:
    г. Харьков
    мне даже представить страшно как ето у тебя так получилось... у меня интел всегда генерировал код лучше, меньче и быстрее.
     
  13. Exp10der

    Exp10der Мастер дзена

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    337
    Адрес:
    Красноярск
    хм.. кстати никто не пробовал сравнивать дельфю и MSVC (ну или free pascal и gcc) по скорости сгенерённого кода, разумеется на одном алгоритме?
     
  14. T800

    T800 Member

    Публикаций:
    0
    Регистрация:
    7 дек 2006
    Сообщения:
    293
    Адрес:
    Moscow
    Exp10der
    Бредовая затея, т.к. заранее известен результат.
    Хотя тоже иснтересно узнать разницу в скорости.
     
  15. Exp10der

    Exp10der Мастер дзена

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    337
    Адрес:
    Красноярск
    T800
    почему думаешь, что бредовая или по твоему делфи писали более криворукие кодеры?
     
  16. scf

    scf Member

    Публикаций:
    0
    Регистрация:
    12 сен 2005
    Сообщения:
    386
    Exp10der
    компилятор дельфи знаменит "говнокодом", который он производит. Любой, кто реверсил программу на дельфи, это знает
     
  17. Exp10der

    Exp10der Мастер дзена

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    337
    Адрес:
    Красноярск
    scf ок поковыряю... чтото даже интересно стало..
     
  18. vover

    vover Владимир

    Публикаций:
    0
    Регистрация:
    21 авг 2008
    Сообщения:
    202
    Для сравнения С vs Asm ) http://www.gamedev.ru/code/forum/?id=88430
    Имитация столкновения партиклов в виде шариков. Большой простор для оптимизации.
     
  19. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    rudik
    Быстрее, сильнее и выше! Ура товарищи :)