Имхо всё таки с точки зрения прогресса в программировании библиотеки стандартных функций, в том числе графических лучше писать на асме и не экономить на зарплате оптимизаторов ибо эти библиотеку юзаются очень подолгу, а значит время их разработки/доработки некритично, кросплатформенность тоже некритична, т.к. они в любом случае сильно платформозависимы, а вот скорость/объем кода критичны опять таки потому, что от них зависит масса других программ. Другое дело прикладное программирование использующее эти хорошие билиотеки - там hilevel самое оно. Но М$ считает что прогресс это прежде всего железо, и потому программы должны быть всё горомаднее и тормознутеее, а лучший способ добиться такого прогресса есно лежит через создание соответсвующих стандартных библиотек ))
Y_Mur, GoldFinch сколько в жизни вы напесали библиотек стандартных функций, в том числе графических? ^_^ ps: такое ощущение, что здесь каждый второй -- какой-нибудь программист AI, игровой логики, рендеринга итд, где быстродействие -- это то, о чем должна болеть голова. все в Blizzard работают штоле? O_o не в обиду естественно. никого не хочу задеть.
varnie Не будем разводить холивар, но из того, что мыслящих как Вы большинство не следует, что именно Ваш образ мышления правильный а опыт и путь у каждого свой и если человек сейчас не может предьявить готовый результат во всей красе, то это не значит что у него нет определённых наработок из которых через некоторое время получится то о чём он пока говорит в общем виде и не значит что этот результат будет хуже чем у тех кто чего-то уже добился придерживаясь Вашей точки зрения.
GoldFinch, Y_Mur По-моему, тема заключалась не в том, кто быстрее и как быстрее. А в том как нагадить, чтобы компилятор не разгрёб (как личное мнение: +1 varnie)
Ну опустить GСС++ довольно сложно, ибо даже по дефайнам с built-in асмом он рвёт любой асмЪ... да и оптимайзер довольно крут.. Например такая прожка для выводу строки идентификации проца через CPUID Код (Text): #include <stdio.h> #define cpuid(index, eax, ebx, ecx, edx) \ asm volatile ("cpuid" \ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) \ : "0" (index)) int main() { char str [13]; int * ptr; int eax, ebx, ecx, edx; cpuid(0, eax, ebx, ecx, edx); ptr = (int*)&str[0]; *ptr = ebx; ptr = (int*)&str[4]; *ptr = edx; ptr = (int*)&str[8]; *ptr = ecx; str[12]=0; printf (str); } и его трансляция на асм Код (Text): _main: push ebp mov eax, 16 mov ebp, esp push ebx sub esp, 52 xor ebx, ebx and esp, -16 call __alloca call ___main mov eax, ebx /APP cpuid /NO_APP mov DWORD PTR [ebp-40], ebx lea eax, [ebp-40] mov DWORD PTR [ebp-36], edx mov DWORD PTR [ebp-32], ecx mov BYTE PTR [ebp-28], 0 mov DWORD PTR [esp], eax call _printf mov ebx, DWORD PTR [ebp-4] xor eax, eax leave ret от так вот... эта, ссори.. почетал книшку по сям, наверно так лутше нада: Код (Text): cpuid(0, eax, ebx, ecx, edx); *(int*)(str) = ebx; *(int*)(str+4) = edx; *(int*)(str+8) = ecx; str[12] = 0; printf (str); но в принципе и это можно какнить задейфанеть, чтоб многабукоф не песать. да.
Маленький уточняющий вопрос - gcc по оптимизирующей способности сейчас лучше msvc? существенно лучше или чуть-чуть? насколько близок к интеловскому? вроде раньше везде писали, что он им ущественно уступает?
Y_Mur MSVC лучший из перечисленных. У меня при максимальных оптимизациях по скорости Интел выдавал код почти в 2 раза(!) жирнее и несколько тормознее чем msvc. Притом, что у Интела была заточка под текущий проц, а msvc генерировал generic-код. Возможно, Интел силён на коде, интенсивно юзающем вычисления с плавающей точкой. У GCC визуально оптимизация несколько слабее, чем у msvc. К тому же, отсутствует whole program optimization.
мне даже представить страшно как ето у тебя так получилось... у меня интел всегда генерировал код лучше, меньче и быстрее.
хм.. кстати никто не пробовал сравнивать дельфю и MSVC (ну или free pascal и gcc) по скорости сгенерённого кода, разумеется на одном алгоритме?
Exp10der Бредовая затея, т.к. заранее известен результат. Хотя тоже иснтересно узнать разницу в скорости.
Exp10der компилятор дельфи знаменит "говнокодом", который он производит. Любой, кто реверсил программу на дельфи, это знает
Для сравнения С vs Asm ) http://www.gamedev.ru/code/forum/?id=88430 Имитация столкновения партиклов в виде шариков. Большой простор для оптимизации.