![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
bankuss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 396 Регистрация: 26.3.2004 Репутация: нет Всего: 4 |
Решил я сравнить примерную скорость работы с числами и массивами 3-х языков: VB6, VB.net и C#.
И вот что вышло: задачка такая - есть массив 800 на 800 набитый числами типа double. Производим его сортировку по возрастанию - по каждой линии отдельно (т.е. 800 сортировок по 800 чисел) И вот время выполнения: VB6 - 7 секунд VB.net - 11 секунд С# - 44 секунды (!!!) Что вы на это скажите? P.S. код в каждой программуле идентичный, все компилилось в exe (с оптимизациями на скорость) и там все мерялось (по 3 раза). машина - С-1300\256 |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 6 Всего: 118 |
Странно. И не объяснить это без кода. Хорошо бы код показать.
|
|||
|
||||
bankuss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 396 Регистрация: 26.3.2004 Репутация: нет Всего: 4 |
вот бейсиковский текст проги:
Dim a As Integer Dim b As Integer Dim c As Integer Dim dat As Double Dim dat2 As Double Dim mass(800, 800) As Double Label1.Text = "START" Form1.ActiveForm.Refresh() For a = 0 To 800 For b = 0 To 800 dat = 1 + Rnd() mass(a, b) = dat Next b Next a For b = 0 To 800 For a = 0 To 800 For c = 1 To 800 dat = mass(a, b) dat2 = mass(c, b) If dat > dat2 Then mass(a, b) = dat2 : mass(c, b) = dat Next c Next a Next b Label1.Text = "END" End Sub |
|||
|
||||
Гость_anton_misa |
|
|||
Unregistered |
а ты много раз запускал эту программу? и все тот же результат?
|
|||
|
||||
Kurt |
|
||||||
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
bankuss, прости, но ты что-то не то говоришь..
У меня AMD1600/256RAM. Машина очень загружена - музыка, студия, 3 СУБД, но здесь эт не столь важно. Вот мои переводы: VB.NET:
C#
Как видишь, я тут очень грубо время вычислял время, но нам хватит. Вобщем результаты: VB.NET - в среднем 33-36 сек. C#.NET - 30-34 сек. (ну там из-за 1-го, 2-го запусков и т.п.) Далее.. VB6 я тож проверил. Тока сначала один вопрос - ты уверен, что
это из VB6? Там тока Label1.Caption.. Иль ты VB.NET и имел ввиду?.. Итак. Запустил я VB6-код, приготовился уловить момент в 7 секунд, ОДНАКО! Мой комп трудился на этими нехитрыми строчками почти 3,5 минуты! (еще запустил - таже картина) Можь, ты чего-то не то посчитал? Или это я где стормозил?.. ![]() -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
||||||
|
|||||||
bankuss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 396 Регистрация: 26.3.2004 Репутация: нет Всего: 4 |
Да это код из VB.net а в 6-м бейсике конечно label1.caption вместо label1.text
|
|||
|
||||
bankuss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 396 Регистрация: 26.3.2004 Репутация: нет Всего: 4 |
подредактировал я свои проги - вставил System.DateTime.Now, функцию rnd в vb.net сделал как у тебя (похоже на C#). Все перепроверил 20 раз и еще раз протестировал.
Кстати у тебя C# коде ошибка: mass[a,b]=dat; - здесь надо dat2 mass[c,b]=dat; ну это мелочи ![]() Единственное отличие - я замер времени делаю с заполнения массива по завершение его сортировки., а у тебя меряется тока сортировка т.е. я вставляю DateTime dt1 = System.DateTime.Now перед заполнением массива. И еще я проги деляю в виде формы с кнопкой, консоль не использую. Теперь про VB6 - при компиляции ставишь на скорость и в advanced везде ставишь галки. Таким образом убираются всякие проверки. И вот результаты: VB6 - 6-7 секунд VB.net - 11 секунд C# - 11 секунд (наконец-то!) мерял по 5 раз. Вот такие дела... |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 6 Всего: 118 |
Это уже очень похоже на правду. |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 93 |
Так что же это получается, что C# в любом случае медленнее, чем VB6? ![]() -------------------- Да. Именно так. |
|||
|
||||
Kurt |
|
|||
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Не согласен.
Как я уже отмечал - у меня VB6 работает ГОРАЗДО медленнее. Операционная система - WinXP SP2. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
bankuss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 396 Регистрация: 26.3.2004 Репутация: нет Всего: 4 |
У меня тоже WinXP, только - SP1а.
C# приближается к VB6 только в консольном режиме (у меня получается 8 секунд), но VB6 все равно быстрей, что странно. Все-таки сишные компиляторы считаются самыми быстрыми. |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 93 |
Решил я сам проверить.
Дело в том, что в своих прогах я большое внимание уделяю быстродействию кода, часто дописываю что-нибудь на ассемблере и т.д. Так вот результаты работы этой проги на AthlonXP 2500+ в WinXP: ~95c. - VB6 без компиляции (запущен из среды разработки); ~10c. - C# опции Release; ~10c. - VB.NET опции Release. ~10c. - VB6 в .exe с Optimize for Fast Code только; ~8c. - VB6 в .exe с Fast Code, Pentium Pro, Remove Array Bounds checks, Remove Safe Pentium FDIV, Allow Unrounded Floating Point; Ну и смеха ради: ~4,2c. - C++Builder 6 со всеми оптимизациями; ~3,2с. - Visual C++ 6.0 с оптимизацией Speed, Pentium Pro; ~3,1c. - Visual C++ .Net (unmanaged) со всякими оптимизациями. В managed C++ я откомпилировать не сумел. Kurt, обрати внимание на первый результат, видимо ты так и получил эти 3,5 минуты. Печально становится, товарищи, от такого быстродействия великого и могучего C# ![]() -------------------- Да. Именно так. |
|||
|
||||
bankuss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 396 Регистрация: 26.3.2004 Репутация: нет Всего: 4 |
Спасибо мелкософту за такую скорость С#
![]() |
|||
|
||||
chipset |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 1 Всего: 165 |
Кто нибудь пробовал замерять быстродействие той же программы под ДОСом?
В очередной раз потверждает то что BC++ мертв... Это сообщение отредактировал(а) chipset - 17.5.2004, 07:31 --------------------
|
||||
|
|||||
stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
C# тут ни при чем, все дело в самой платформе .net, просто, надо принять как должное, что .net код работает несколько медленей, чем native код. -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |