C# в глаза не видел. Как он дружит с MMX/SSE?
Я бы написал свой тестовый пример и сравнил по скорости.
Только вот, что-то мне подсказывает что C/C++ будет побыстрее
Куда ему. Надо брать нормальные тесты, например, перемножение матриц,
а не вызовы функций. И смотреть как компилятор переведет код под SSE.
Imho, и не только мое, самый оптимизирующий компилер Intel C/C++ 7.0.
Только очееень медленно работает
Давайте проведём собственные тесты, по моему очень интересная тема
VC++ vs VB.NET vs VB6 vs C#
RomanPshenichny
Пиши тест (простой), чтобы можно было перевести на другие языки.
Только надо учитывать что ни какого ассемблера в .NET нет, а в VB6 и подавно.
Время засекать как timeGetTime Lib "winmm.dll" ?
Лучше чтобы программа считала ~ 10 мин. И засечь секундомером.
[Ответ]
RomanPshenichny 17:58 14.07.2003
LSL
> Пиши тест (простой), чтобы можно было перевести на
> другие языки. Только надо учитывать что ни какого
> ассемблера в .NET нет, а в VB6 и подавно.
Без ассемблера. Чистый язык (+ возможные расширения )
В C# и в VB6 есть 64 и 128-битные типы?
Т.е. MMX и SSE регистры вживую?
> Время засекать как timeGetTime Lib "winmm.dll" ?
Выше крыши хватит.
А еще можно в тиках считать.
[Ответ]
LSL 18:36 14.07.2003
RomanPshenichny 64 и 128-битные типы? есть в .NET , в VB6 нет.
Их можно отдельный тест без VB6.
Только не хитрить
И чтоб можно было перевести на другие языки.
[Ответ]
LSL 00:40 15.07.2003
Пару замечаний. Говоря си имею в виду седьмой без managed ext. конечно, и если тестить у меня, то проц мой Celeron 633, SSE2 нет.
[Ответ]
RomanPshenichny 22:45 24.07.2003
Был занят.
Теперь более-менее свободен
Таки тест. Перемножение матриц. Матрицы выбираются случайным образом.
Чем больше MAX_MATRIX -- тем сильнее влияние на скорость кеша&памяти. ITERATION задает время исполнения теста.
[Ответ]
zic 12:59 25.07.2003
RomanPshenichny
Главный зачинщик - LSL смылся из города .Когда будет неизвестно .
А я и так знаю . что быстрее .
Да и на VB или VB.NEt перекинуть не смогу в любом случаее.[Ответ]
Ты все в Release собирал, с отключенной нафиг Debug и с оптимизацией под максимальную скорость?
Да, Release.
Что же за хрень ? У zic'а нормально а у меня нет.
В чём же секрет может быть... знаю только что у него
framework 1.1 а у меня 1.0(под него и компилировал)
NeoExpert протестируй ты, у тебя тоже 1.0 стоит...
---
ps:
Матрица у меня класс а не структура как на си, это тоже должно давать тормоз..позже попробую сделать как структуру.
И как я уже говорил в net есть уже класс Matrix, он наверняка оптимизирован под задачу....и наверно быстрее работает чем в си.
LSL добавил [date]1062797874[/date]:
---
И о пригодности для написания игр.
Мне кажется 10% потери производительности с головой окупятся огромными преимуществами .NET, интересно что ещё
может помешать платформе стать инструментом игродела ??
[Ответ]
zic 00:52 06.09.2003
Что же за хрень ? У zic'а нормально а у меня нет.
В чём же секрет может быть... знаю только что у него
framework 1.1 а у меня 1.0(под него и компилировал)
У меня и то и другое .
Framework 1.1 стоял давно ,а 1.0 вместе с VS NET 7 появился .
zic добавил [date]1062798873[/date]: интересно что ещё
может помешать платформе стать инструментом игродела ??
Глючность.
Но её нет в отличии от её большей вероятности в C++ !
Или есть убедительный пример ?
[Ответ]
zic 01:14 06.09.2003
Dashboard
Janus ( RSDN offline client)
С#DevelopmentEditor
Дальше ?
Просто забил с экспериментами .
На самом деле у NEt есть нектоорые приимущества перед другими вещами , но не там где ты думаешь .
Это в первую очередь разработка инструментов администрирования и управления .
Очень удобно взаимодействовать с ActiveDirectory
Встроенные средства работы с WMI и прочее .
[Ответ]
LSL 01:24 06.09.2003
zic ну незнаю, незнаю....
Я тоже могу перечислеть ряд программ которые работают прекрасно... но лучше воздержусь. Будем тестировать.
[Ответ]
LSL 13:43 06.09.2003
Я тестирую ещё раз:
Моя система:
.NET Framework 1.0, WinXP Pro
Celeron 633, RAM 256, i815.
---------------------------
Visual C++7 ~1.5
Visual Basic 6 ~3.0
Visual Basic .NET ~21.3 (!)
---------------------------
(код в vb.net не идеальный)
Что то мы напутали... NeoExpert, протестируй ещё, там три exe-файла.
[Ответ]
LSL 17:36 06.09.2003
Torvic VB по моему не умеет делать консольных приложений.
VB умеет делать консольные приложения.
А я на асме сделаю аналогичный тест. Скоро выложу.
Да..транслируй с Сишного примера...перемноржение матриц.
Ну вы и намудрили. Уж если делать тест, то аналогичные файлы делайте. В С у вас консольное приложение(хоть и включили windows.h). Значит РЕ другое. Не задумывались?
Нет разницы. Я выходные данные хоть графиком выдам, абы матрицы быстро перемножались.
[Ответ]
Внимание я модернизировал код, и теперь тест на vb7 использует структуры. У меня производительность увеличилась в два раза.
Жду результатов от zic'a и эксперта..и других.
[Ответ]
RomanPshenichny 20:58 08.09.2003
> Тем более что консольному приложению выделяется очень
> мало памяти, совершенно не выделяется виртуальной
> памяти, приоритет наиболее низкий, и это не говоря о РЕ...
NeoExpert LSL "ВааУ" что это значит ???
Это значит что тест на Бейсике обошел по скорости тест на Си++ ! Наконец-то это свершилось ((((((((: сколько лет...
А вот testVB7M (struct) опять выкинул фокус...
На будущее, прошу делать, чтоб консоль VC не закрывалась после выполнения
А вот это уже к Роману Пшеничному, его код
Torvic
Я валяюсь
ps:
Не воспринимайте близко к сердцу мои слова...[Ответ]
Ещё раз кладу архив с тестами (new_tests.zip) что бы небыло путанницы:
Тестируется четыре решения на трёх языках.
Пока результат по тестам Эксперта таков:
VC7 - 1.0
VB7 - 0.98 (VB7M - 6.2)
VB6 - 1.4
Предлагаю протестировать ещё, не забудьте поубивать все фоновые задачи.
[Ответ]
LSL 19:39 11.09.2003
NeoExpert Для начала надо сделать практически одинаковый код на Си и на Бейсике, а потом сравнивать.
Дык код и есть одинаковый, иначе и смысла не было !
[Ответ]
LSL 23:49 19.09.2003
Но иногда вам не нужна вся эта гибкость. Иногда вы хотите использовать что-то настолько же простое, как структура, и не хотите лишних затрат производительности. CLR предоставляет возможность определить то, что называется типом значения, и интерпретируется во время компилирования как структура. Типы значений управляются стеком и предоставляют вам скорость структуры. Как и ожидалось, они также имеют ограниченную гибкость (например, у них нет наследования). Но в экземплярах, в которых вам нужно использовать структуру, типы значений обеспечивают невероятное повышение скорости.
Типы значений полезны только тогда, когда вы используете их как структуры. Если надо интерпретировать тип значений как объект, среда выполнения обработает для вас упаковку и распаковку объекта. Однако это требует даже больших затрат, чем создание его сразу как объекта!
Вот это как раз и обьясняет медлительность моего теста со структурами.
Это значит что тест с классами который по скорости на уровне Си++ будет легко побеждён тестом со структурой value type !