![]() |
Модераторы: 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. |
|||
|
||||
Chesnokov_A |
|
|||
Unregistered |
А вот пример на Java:
C:\Program Files\j2sdk1.4.2\bin>java JavaMain Starting.. Press <Enter> Done Time: 18316 то есть 18 секунд Для Тестирования использовались: Pentium III 600MHz + 256MB Windows 2000 + SP4 java version "1.4.2" Java 2 Runtime Environment, Standard Edition (build 1.4.2-b28) Java HotSpot Client VM (build 1.4.2-b28, mixed mode) |
|||
|
||||
Kurt |
|
|||
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Хм...
А вышеприведенные коды на C# и VB?.. ![]() З.Ы. Просто хочу получить суммарные данные с одной конкретной машины.. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
Kurt |
|
|||
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Блин, я в шоке..
Прога на C# исполняется за 29 сек. (мой комп сильно загружен..), а приведенный код на Java - 24 сек! Этого не может быть! Я всегда смотрел на скорость Java vs C# с чувством некоторого превосходства.. А тут.. Что-то не то.. Где подвох?.. ![]() -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
Chesnokov_A |
|
||||
Unregistered |
Не надо сердится, я так, для примера запостил, самому интересно стало, я подумал, может кому то, тоже интересно будет
Примерно можно сопоставить так: Теперь берем 18 секунд делим на (AthlonXP 2500/Pentium III 600)=~4, получается 4.32. Попробовал запустить с опцией для виртуальной машины "-server" - получил 13 секунд, что примерно 3.12 на вашей |
||||
|
|||||
Kurt |
|
|||
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Не понимаю о чем ты - я просто спросил как работают остальные проги.. Однако, не будем об этом, дабы не разводить флейм. ![]() Как ты видел, у меня Java работает быстрее - опробуй C# на своей машине.. Да. У меня Athlon 1600, а не 2500.. З.Ы. Попутно приглашаю зарегестрироваться на нашем форуме - здесь всегда рады помочь, а кроме того будут рады твоей помощи. ![]() -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 93 |
Щас на Jave проверю код Chesnokov'a. Я чего-то и забыл про неё
![]() -------------------- Да. Именно так. |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 93 |
В общем работало оно в среднем ровно 10 секунд.
Установлено: Java Runtime Environment 1.4.1 А вот версия JDK у меня 1.0 и вообще компилятор доверия не вызывает. Но!!! ![]() ![]() Лохонулся я. Да и не только я. Дело в том, что я c# и VB7 запускал и среды разработки, а стоило их запустить без неё, то получилось такое: C# - 5,5 секунд VB7 - 6 секунд Так что у Java он всё-таки выигрывает, как и у VB6, так что жить можно. ![]() ![]() ![]() -------------------- Да. Именно так. |
|||
|
||||
Kurt |
|
|||
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Не - у меня без всяких сред Java отработывала быстрее (см. результаты выше..)
Слухайте, а вы в опциях C# оптимизацию ставили? Теперь C# обгоняет Java, правда, совсем чуток.. Интересно, а Managed C++ как отработает.. Есть люди, хорошо с ним знакомые?.. ![]() А с unsafe кто-нибудь близко знаком?.. Можь, с его помощью можно оптимизировать код? Типа чтоб он не проверял на выход массива за границу и т.п... Сам особо не возился - не было нужды.. Попробую разобраться.. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
bankuss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 396 Регистрация: 26.3.2004 Репутация: нет Всего: 4 |
Оказывается Java не так уж и медленно с числами работает
![]() Терпимо вобщем. |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 6 Всего: 118 |
Модератор: Хотелось бы, чтобы данный топик не перешел во флейм Java vs .NET. Пока большая часть сообщений достаточно корректна, но я буду следить, чтобы это не перешло в обсуждение в форме - "Microsoft must die" или "Java медленная и все тут"
Это большое заблуждение, что JAVA очень медленная. В расчетах она на проценты медленнее. А отнюдь не на порядки. Некоторые операции могут быть даже немного быстрее по скорости. Понятно, что графика будет медленнее - она все-таки не напрямую через Win API работает. И алгоритмизация за счет универсальности тоже проигрывает по оптимальности. То же относится к вводу-выводу. НО !!! Java для расчетов работает очень прилично - это действительно так и есть. Просто надо компьютер с достаточным количеством памяти. Недавно получил очень занятную статью от Domestic Cat http://www.idiom.com/~zilla/Computer/javaCbenchmark.html |
|||
|
||||
Chesnokov_A |
|
|||
Unregistered |
Ну так какие результаты получились? |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 1 Всего: 12 |
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Kurt |
|
|||
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Хммм.. Однако "итог" той темы - C# быстрее Delphi.
Я написал аналог тестового кода на Delphi:
Согласен, слабоватый способ узнавать время выполнения, но все же.. Данный код у меня выполняется за 23 сек (в среднем..), против 29-30 by C#. Так что... Какие-то противоречивые результаты получаются.. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
bankuss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 396 Регистрация: 26.3.2004 Репутация: нет Всего: 4 |
может еще зависит на каком проце код исполняется? intel или amd
|
|||
|
||||
stron |
|
|||
![]() Консультант ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1654 Регистрация: 17.7.2003 Где: Питер Репутация: 4 Всего: 36 |
....или на какой операционке
Знаю, что у Kurt'а XPень и amd'шный проц -------------------- подписи нет |
|||
|
||||
Kurt |
|
|||
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
WinXP SP2. Athlon 1600 MX. 256RAM Комп очень загружен всякой ерундой, однако.. Оптимизированный C#-код исполняется за 24-25 сек, в то время как дельфовый - 22-23.. Небольшая разница, но все же.. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 93 |
Kurt
А ты C# точно без отладчика запускал? В смысле Start Without Debugging а не просто Start. Как я уже писал у меня ~5 секунд работает, а с отладчиком ~10с.. Ну не может же быть твой комп в 5 раз медленнее моего ![]() У меня WinXP SP1, Athlon XP 2500+ (512Кб кэша), 512Mb RAM. Я дельфёвый код проверю завтра, правда у меня есть только Delphi 3.0 ![]() ЗЫ: Как видишь, Kurt, я появился в этом разделе раньше, чем планировал ![]() ![]() ![]() Добавлено @ 23:58 2AntonSaburov Цель участия в этом топике для меня -- определиться с областью применения C# в частности и .NET в целом. Я просто не люблю забивать гвозди микроскопом (правда иногда приходится ![]() Мне нужно знать какова цена этого удобства, надёжности и безопасности технологии .NET Никакого злого умысла ![]() Это сообщение отредактировал(а) Дрон - 19.5.2004, 23:58 -------------------- Да. Именно так. |
|||
|
||||
Kurt |
|
||||||
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Я вообще без студии запускал. На .exe кликал.. Мой комп очень загружен - антивирусники, NortonProtect, Oracle, Cache и т.д. Хотя ты прав - надо поглядеть, как его ускорить..
А без разницы - эт консольный проект. Хоть в Borland Pascal 7.0 проверяй. А разница между скоростью исполнения кодов, написанных в разных Delphi, не будет такой уж значительной.
Дык.. Что могу сказать.. Welcome! ![]() Всегда рады пополнению личного состава.. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
||||||
|
|||||||
Kurt |
|
|||
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Ой-ой.. Руки мои кривые!
При Start Without Debugging ~16 сек! Как же я так промухал.. Однако, мы сравниваем оптимизированный код на C# с "обычным" кодом Delphi. Там же тоже можно повозиться.. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |