Вопрос: Что быстрее VB.NET или C#? | Добавлено: 14.12.02 16:21 |
Автор вопроса: ![]() |
Ответы | Всего ответов: 25 |
Номер ответа: 16 Автор ответа: ![]() ![]() Вопросов: 7 Ответов: 13 |
Профиль | Цитата | #16 | Добавлено: 07.01.03 18:31 |
я вообще большой любитель Васика но вот попробовал приведенные примеры (правда там ошибка) c# 0.04 сек vb.net 3.1 сек Вот гады, они наверное что-то специально сделали что бы медленее работало А теперь вопрос в каких еще случаях это критично или же во всех c# настолько быстрее можно ли расчеты писать на c# ?
|
Номер ответа: 17 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 161560107 Вопросов: 9 Ответов: 52 |
Web-сайт: Профиль | Цитата | #17 | Добавлено: 07.01.03 20:59 |
Я проверил - действительно C# намного быстрее. Попробовал дизассемблировать (ildasm.exe). Для VB.Net: IL_001f: ldc.i4.0 Для VC#: IL_001e: ldc.i4.0 Очевидно, VC# использует pop вместо stloc.1 и т.д., но я хотя и вижу разницу, но не могу пока понять, почему один быстрее. Может кто-нибудь обьяснить ? |
Номер ответа: 18 Автор ответа: ![]() ![]() Вопросов: 7 Ответов: 13 |
Профиль | Цитата | #18 | Добавлено: 07.01.03 21:57 |
long startTime = DateTime.Now.Ticks; тут цикл long endTime = DateTime.Now.Ticks; TimeSpan timeTaken1 = new TimeSpan(endTime - startTime); А это выводил в mesagebox timeTaken1.TotalSeconds.ToString() |
Номер ответа: 19 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 161560107 Вопросов: 9 Ответов: 52 |
Web-сайт: Профиль | Цитата | #19 | Добавлено: 07.01.03 22:10 |
Да, я тоже почти так мерял. Кстати, у VC# есть в свойствах проекта - Optimize Code. Если отключить, скорость его и VB становится равной. В VB тоже есть Enable optimizations, но разницы при нём включенном и выключенном я не заметил. Может, баг Microsoft ? Тем более что параметры компиляторов VB и VC# для обоих этих свойств "/optimize". Хотя и для разных компиляторов, но ведь не зря всё делали схожим. |
Номер ответа: 20 Автор ответа: ![]() ![]() Вопросов: 7 Ответов: 13 |
Профиль | Цитата | #20 | Добавлено: 07.01.03 23:11 |
У меня на всяких сложных штуках разрыв немного сократился но все равно есть. Помоему этот г... действительно не делает оптимизацию |
Номер ответа: 21 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 161560107 Вопросов: 9 Ответов: 52 |
Web-сайт: Профиль | Цитата | #21 | Добавлено: 08.01.03 13:47 |
Я идиот ! Проверил - теперь почти одинаково ! |
Номер ответа: 22 Автор ответа: ![]() ![]() Вопросов: 7 Ответов: 13 |
Профиль | Цитата | #22 | Добавлено: 08.01.03 15:39 |
Я сделал клас в котором хранится рад данных целых, даллов порядка, строка 15 потом с помощью датаридер АДО.Нет все считываю. Код на ВБ и С# индентичен вплоть до строчек Но считвание данных 70000 объектов из бд vb = 3.8 c c#=3.2 c еще у меня сложилось мнение что из обычных длл функции и процедуры вызываются в разы медленнее чем встроенные функции, да помоему в с# из длл быстрее вызывает
|
Номер ответа: 23 Автор ответа: ![]() ![]() ICQ: 155153916 Вопросов: 2 Ответов: 126 |
Профиль | Цитата | #23 | Добавлено: 08.01.03 17:55 |
2Darxeth Я бы согласился, по поводу помещения в стек, но нашел еще другие отличия в производительности. Вот код: VB как вы поняли пример №1 показывает, что VB, как и раньше, не оптимизирует обработку операторов ветвления, а второй, что математика тоже не оптимизируется (пр. X=0*Y) в отличии от C#. Хотя это всего лишь предположения, ответ может дать только асм, а я за него еще не брался. |
Номер ответа: 24 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 161560107 Вопросов: 9 Ответов: 52 |
Web-сайт: Профиль | Цитата | #24 | Добавлено: 09.01.03 01:10 |
Не знаю. Первый пример показывает у меня одинаковый результат. Ты не забыл поставить в VB-опциях Remove Integer Overflow Checks ? Что касается ветвления - C#'чному && эквивалентно не And, а AndAlso. Второй пример посмотрел в asm (то есть в MSIL) - абсолютно идентичен. Кстати, интересно, что MSIL всё считает в стеке. add value1 value2 то MSIL фактически push value1 Забавно. |
Номер ответа: 25 Автор ответа: ![]() ![]() Вопросов: 7 Ответов: 13 |
Профиль | Цитата | #25 | Добавлено: 09.01.03 12:44 |
Remove Integer Overflow Checks поставлен, но код идентичный вплоть до строчки - заполнение из бд в массив классов работает медлее на 0.6 с вообще не понятно почему А вопрос почему настолько медленее вызываются фукции из обычных длл мне вообще не понятен. В c# помоему быстрее Я в vb даже полную проверку данных включил. |
|