Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: ассемблер и .net Добавлено: 20.10.05 16:20  

Автор вопроса:  Вячеслав
Есть программа на Vb.net 2003.
Переписал ее на VC++. Что-то там оптимизировал в настройках, но работает в несколько раз медленнее.
Вопрос такой:
Так как я привык к Vb.net, можно ли не используя С++ оптимизировать на ассемблерном уровне программу Vb.net.
Программка маленькая (несколько кб) и есть один ответственный участок по скорости (цикл в цикле и сравнение)
Как подступиться? Возможно ли какой нибудь программой залезть в Exe-шник, найти этот кусок (думаю, что найду) и подправить его руками?
Я так понимаю, .net не компилирует "настоящий" exe-шник, есть ли утилиты, которые делают настоящий exe-шник (ngen.exe ?), на который можно натравиться дизассемблерами?

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #1 Добавлено: 20.10.05 18:24
.NET не компилирует настоящий экзешник. Настоящий экзешник компилирует JIT потом.
Но всё равно, не надо так делать.

Ответить

Номер ответа: 2
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #2
Добавлено: 21.10.05 00:13
Вынеси критичный участок в DLL на ассемблере

Ответить

Номер ответа: 3
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #3 Добавлено: 21.10.05 08:52
Если на С++ получилось медленнее - значит что-то не так делал. Должно быть наоборот значительно быстрее. Какие опции компилятору выставлял? Попробуй cl /O2 mysource.cpp

А вообще если программа несколько килобайт, то проще целиком на ассемблере написать её.

Ответить

Номер ответа: 4
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #4
Добавлено: 22.10.05 05:14
Ты чё не слыхал про новые суперкомпиляторы от Микрософт? А вдруг он тебе прогу под P4 на одних SSE2 слабает? :)

Ответить

Номер ответа: 5
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 22.10.05 14:09
дык то что .net быстрее любой 6-ой версии, хоть с++ хоть vb... вроде не для кого не новость, .net примерно в 2 раза быстрее, и пофиг какой язык. Разве что асм щас может соревноваться с .net'om. Попробуй использовать dll, т.е. напиши этот участок на асме или на том же .net'e скомпилируй dll и используй её в vc++

Ответить

Номер ответа: 6
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #6
Добавлено: 23.10.05 02:34
Чтобы откомпилировать приложение для .NET, компиляторы берут исходный код и создают из него MSIL-код.
 MSIL — это полноценный язык(похож на ассемблер), пригодный для написания приложений. Однако, как и в случае с ассемблером, исполььзовать его рекомендовано в особых обстоятельствах.
Для работы с ним есть утилита - ILDASM(входит в стандартный кмплект поставки).

HACKER - ты уж так людей не пугай:) Может ты рекламным агентом MS подоабатываешь:)

Реально "стандартный";( без использования встроенных методов, например те же циклы) код работает примерно раз в 10 медленнее аналогичного на С++. Высокое бытродействие достигается виртузной отработкой всех методов библиотеки .NET. В таких случаях программа может приблизиться в некоторых случаях к аналогичной на С++(и даже быть быстрее).

Вячеслав.
Что у тебя внутри циклов считается?
Если можно выложи этот кусочек на VB.NET и С++.
 

Ответить

Номер ответа: 7
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #7
Добавлено: 23.10.05 04:41
MSIL — это полноценный язык(похож на ассемблер)

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

 Благодаря этому и получается возможность декомпиляции и трансляции из одного .NET языка в другой. Просто взяли какой то один из способов и сделали его стандартом, ничего волшебного.

Ответить

Номер ответа: 8
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #8
Добавлено: 23.10.05 04:46
Вообще логично было бы предположить что VC++7 оптимизирует лучше чем VC++6, а не наоборот. Насчёт остальных не знаю.

Ответить

Номер ответа: 9
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #9
Добавлено: 23.10.05 14:23
дык то что .net быстрее любой 6-ой версии, хоть с++ хоть vb... вроде не для кого не новость, .net примерно в 2 раза быстрее, и пофиг какой язык.
Я долго веселился, HACKER, тебя кто-то по ходу, мягко говоря, жестоко обманул.

Ответить

Номер ответа: 10
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #10 Добавлено: 23.10.05 16:49
:) да? хм... ну небуду упёртым, я таких и сам людей не люблю, ну дык тогда растолкуйте в чём не прав. .Net это ж походу вообще новая архитектура приложения...

Ответить

Номер ответа: 11
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #11
Добавлено: 23.10.05 19:52
У .NET интерпретируемый байт-код, он в принципе не может выполняться хотя бы примерно на том же уровне скорости, что и native

Ответить

Номер ответа: 12
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #12
Добавлено: 23.10.05 20:38
Это увы не все. После первого прохода он компилируется в родной.
Но не даром он назван еще и управляемым. Среда исполнения контролирует ход работы программы. К примеру приятный сервис -автоматическая сборка мусора.
Но если покороче, то помимо интерпритации мы имеем еше сразу два потока(один программы - один среды).Причем второй всячески исследует нашу программу на предмет правильнсти действий. Вот тут мы в производительности особенно теряем.
Но взамен получаем массу приятных и нужных возможностей:)

Ответить

Номер ответа: 13
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #13 Добавлено: 24.10.05 00:48
ну короче всё понятно :)

Ответить

Номер ответа: 14
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #14
Добавлено: 24.10.05 04:30
приятный сервис ...
 ... Но взамен получаем массу приятных и нужных возможностей:)

 Ктож спорит. Интерпретатор именно тем и хорош, что предоставляет удобства, недостижимые компилятору.
 М чего это тебе так от него приятно? К чему это ты там его прислоняешь? ;)

Ответить

Номер ответа: 15
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #15
Добавлено: 24.10.05 09:14
М чего это тебе так от него приятно?

М... Ага, тоже тащишся:)

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам