| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm: Общие вопросы > Гуру АСМа разъясните пжалста :).... |
| Автор: Murzilka 30.8.2003, 05:53 |
| Прочитал на одном уважаемом сайте, что под вин32 смысла писать на асме особого нету, что при работе с графикой вся нагрузка ложится на железо.... а тогда какого черта простенький кубик в окошке(OpenGL) вращается раза в два быстрее, чем в таком же приложении, но написанном на С++ |
| Автор: p0s0l 30.8.2003, 11:14 |
| При работе с графикой надо учитывать критические места, нельзя сказать, что в любом случае вся работа падет на железо. Нужно время от времени при разработке проги смотреть, какая часть программы является "тормозной" - это может быть и рендеринг OpenGL и сам твой код. Найдя тормозное место, его нужно оптимизировать. А ищется это легко и просто с помощью временных замеров каждой части. Т.к. у тебя всего лишь кубик то видяха справляется с ним мгновенно, и тут скорость зависит как от видяхи так и от проца+кода... |
| Автор: Baa 31.8.2003, 00:11 |
| Про нет смысла они имели в виду следующее: 1. Сейчас языки высокого уровня довольно неплохо оптимизируют свой код (своими глазами видел), так что достаточно оптимизации команд именно этого языка. 2. Также программировать на ассемблере не так просто, как на том же С++, потому проекты пишутся именно на языках высокого уровня (заказчик ждать не будет, а также он не будет слушать о том, что ассемблер - это круто) 3. Код на ассемблере обладает низкой удобочитаемостью, что усложняет разработку приложений в команде (это скорее как подпункт к пункту 2) |
| Автор: Murzilka 31.8.2003, 01:08 |
| Изучаю АСМ дня четыре, до этого был кое-какой опыт на С. И что то не вижу я возросшей сложности в написании по сравнению С. Особенно если использовать invoke. Длинна листинга конечно побольше, но сложность ИМХО одинаковая. Как бы высокоуровневые языки не оптимизировали свой код, простое OpenGL приложение написанное в МАSM в 8 раз меньше по размеру исполняемого файла и в два раза быстрее |
| Автор: Baa 31.8.2003, 12:13 |
| Во-первых, меньше - это еще не значит быстрее. Во-вторых, если в проекте на Си++ 1000000 строк кода, то сколько будет на асме? И как другие это будут читать? Поверь мне, в маленьких программах усложнение незаметно, но вот в реальных проектах... |
| Автор: RAN 31.8.2003, 21:09 | ||
Да ладно, не может быть. Это ты загнул. Baa, по-моему этот довесок всё тот же CRT в С++ даёт, а человек решил, что это его прога. |
| Автор: Murzilka 1.9.2003, 00:26 |
| RAN, ну не веришь, сам смотри: http://nehe.gamedev.net/data/lessons/vc/lesson05.zip (с++) http://nehe.gamedev.net/data/lessons/masm/lesson05.zip (masm) Baa, мульён строк |
| Автор: oleg1973 1.9.2003, 00:46 |
| мое мнение таково при использовании разных библиотек типа opengl , directdraw программа делает только промежуточные вычисления а все остальное тоесть вывод на экран кручение вращение заливка тени и так далее делает библиотека в данном случае выигрыш в скорости может быть и не значительным (хотя в томже квейке много на асме написано) но если взять к примеру "чистое програмирование" без дополнительных библиотек (как в старые добрые времена мсдоса) и работать напрямую с видео памятью то я думаю с асмом тут не поспориш ни в скорости ни в размере программ вот оцените что можно сделать в 256 байт кода http://www.256b.com/ http://www.256b.com/processDownload.php?demoId=225 отпад полный! может нам тоже сделать конкурс? а админы? |
| Автор: RAN 1.9.2003, 09:52 |
| Murzilka, ну, я так и думал. Открой свой проект в VC6. Там Alt+F7 (Установки). Открой закладку C/C++. Выбери category - Code generation. И в toolbox'е выбери DLL вместо статической. Посмотри, твой релиз уже займёт 16 кб. А если отключить поддержку C++ и т.п. то код можно ещё урезать. Эта тема только, только поднималась в C++, там Baa дал ссылку на http://www.rsdn.ru/article/cpp/crt.xml. Почитай и ты поймёшь, что говорить, что код на C++ занимает в 8 раз больше места не правильно, привильнее сказать, что при конфигурации Release по-умолчанию код на С++ займёт примерно на 30 кб больше, чем на asm из-за компановки Run-Time'а. |
| Автор: Murzilka 2.9.2003, 00:48 |
| RAN, у меня нету VC6. Я использую Bloodshed Dev-C++, там файл получается 23Кб |
| Автор: RAN 2.9.2003, 01:58 |
| Ну, ты выложил VC-проект, я тебе и написал для VC. Короче если оставить только суть, то программа на C будет сравнима по размерам с asm. А насчёт скорости, то это может быть из-за вызова функций. Я просто не изучал твои примеры, времени сейчас не много. Может потом посмотрю. P.S. Повторюсь в сотый раз - я за разумное совмещение C и asm. |
| Автор: oleg1973 2.9.2003, 13:27 | ||
используй LCC-win32 у него маленькие файлы получаются |
| Автор: Murzilka 3.9.2003, 02:58 |
| RAN, я тоже за разумное совмещение C и asm. oleg1973, спасиб за совет. |
| Автор: mr.DUDA 3.9.2003, 13:55 |
| Murzilka, по-моему можно очень неплохо совмещать C++ с его готовыми решениями по хранению структурированных данных (STL), и ASM-вставки в отдельных, наиболее критичных по времени выполнения функциях (читай: математических вычислениях и интенсивной работе с блоками памяти). |
| Автор: NightGoblin 5.9.2003, 01:25 |
| Я тоже так думаю |