Войти
ПрограммированиеФорумОбщее

Еще раз о производительности .NET

Страницы: 1 2 Следующая »
#0
14:44, 25 дек. 2011

Хотелось бы снова поднять этот вопрос.

С новыми версиями рантайма для .NET, там вроде как что-то оптимизируют, переделывают. JIT компилятор теперь умеет применять SSE3. Я как-то проводил тест, да, действительно, в циклах он теперь использует xmm-регистры. Хотя по-моему, использовать SSE где попало — это не правильно. Сборщик мусора, со временем, вроде как тоже допиливается...но это же Майкрософт, там наверняка тонны говнокода.

В общем, что делать, если в целом C# нравится, но нет уверенности что получу приемлемую производительность? Не фанат С++, код на нем писать сплошное неудовольствие для меня. Есть как бы Ди — но это мертворожденная вещь, которая присутствует для коллекции.

Что же делать? Как же быть?

Видел как работает с большими картинками Paint.NET, — аж слезы наворачиваются. Думал, что лаптоп просто слабый, однако фотошоп с большими картинками справлялся на ура. Неужели майкрософт, со своим количеством денег, не смогла нанять настоящих специалистов чтобы реализовать такую ответственную вещь — рантайм .net? Или это просто говнокод со стороны конечного программиста, писавшего paint.net?

Дискасс..


#1
15:20, 25 дек. 2011

mrt

Бывает так, что С# опережает С++, но это в очень конкретных узких ситуациях, не для общего назначения.
А в общем проигрыш большой по скорости не то слово!

Одни ребята помню тестировали обработку изображения на OpenGL
C# проигровал в 15 раз С++.

Но C# хорош во многих других моментах, где скорость не так важна.

Чтобы нивелировать низкую скорость обработки графики на NET, необходимо целиться на использование шейдеров.
Благо отличий синтаксиса шейдеров от языка С# "почти нет".


mrt
                                ->  Видел как работает с большими картинками Paint.NET, — аж слезы наворачиваются. Думал, что лаптоп просто слабый, однако фотошоп с
                                -> большими картинками справлялся на ура. Неужели майкрософт, со своим количеством денег,
                                ->  не смогла нанять настоящих специалистов чтобы реализовать такую ответственную вещь —
                                ->  рантайм .net? Или это просто говнокод со стороны конечного программиста, писавшего paint.net?

Microsoft очень много тратит денег на NET на самом деле!
Вообще-то создание Paint.NET не входит в число их основных интересов.
То что они это ещё сделали - им +100500.

Если в сложении и умножении у C# не так уж плохо, то в циклах и ветвлениях - плохо(относительно С++ machine)

Вообще-то С# - это язык не машинный, а интерпретируемый.
Если не брать в плюс кроссплатформенность языка java, то С# опережает java в целом по скорости и функциональности(не путать с java-скрипт)

#2
15:56, 25 дек. 2011

mrt
> Думал, что лаптоп просто слабый, однако фотошоп с большими картинками
> справлялся на ура. Неужели майкрософт, со своим количеством денег, не смогла
> нанять настоящих специалистов чтобы реализовать такую ответственную вещь —
> рантайм .net?
Это в принципе невозможно, в силу ущербной самого .нета (да и жабы), как концепции. Выбранные для виртуальной машины абстракции слишком уж чужды для модели выполнения естественного машинного кода.

#3
16:17, 25 дек. 2011

mrt
> Что же делать? Как же быть?
Попробуй Python или Go

#4
16:27, 25 дек. 2011

Питон особенно новый третий, весьма далёк от "быстрого".
Если уж хочется чего-то побыстрее, погляди на http://shootout.alioth.debian.org/
Раздел "какие языки самые быстрые" http://shootout.alioth.debian.org/u64q/which-programming-language… e-fastest.php

#5
16:31, 25 дек. 2011

А если MONO взять, да при запуске ключами указать запуск cборок через llvm ?

#6
16:34, 25 дек. 2011

0iStalker
> А если MONO взять, да при запуске ключами указать запуск cборок через llvm ?

Они сами пишут, что JIT-компиляция посредством LLVM ОЧЕ МЕДЛЕННАЯ. Для десктопного приложения это важно.

#7
17:14, 25 дек. 2011

Andconst
> Вообще-то С# - это язык не машинный, а интерпретируемый.
В школу, учить что такое .NET. Управляемый код при запуске компилируется в машинный.

#8
17:27, 25 дек. 2011

zlos
> Управляемый код при запуске компилируется в машинный.
Токоль это не спасает .NET....
http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&… ;lang2=csharp
под Windows думаю результаты будут теже, хотя если использовать Intel C++ Compiler, то будет очень прискорбно...
PS Ничего против C# не имею, сам бы писал бы на нём в связке с ху**ёй, но производительность отпугивает...

#9
18:42, 25 дек. 2011

Andconst
> C# проигровал в 15 раз С++.
ПРУФЫ?!


Сколько специалистов и все в одном тереде :)
mrt
> Видел как работает с большими картинками Paint.NET
а ты в простом пейнте их открой, вообще сдохнешь (а он наверняка нативный же)- начнешь кричать что всем надо писать на асме?

mrt
> Или это просто говнокод со стороны конечного программиста, писавшего paint.net?
да

особо тугим подскажу - это я намекаю на то что проблема в алгоритмах и программистах, но никак не в ЯП. ищите проблему у себя а не вините всех подряд. Да и не модно  сейчас уже винить МС, ведь тренд этого сезона - гнобить гугл андроид за нарушение патентов)))
ну и по остальным пунктам тож самое

Obj-c вообще медленный за счет только механизма селекторов(сродни делегатам в шарпе), который работает при всех вызовах методов у объектов, но этож не мешает на нем кодить нормальные игры


http://tanat.mail.ru/screenshots/page/1/#286 - Unity/C#

#10
18:57, 25 дек. 2011

Andconst
> Одни ребята помню тестировали обработку изображения на OpenGL
> C# проигровал в 15 раз С++.

давай код в студию

p.s.
не ожидал таких отзывов о C#

#11
21:06, 25 дек. 2011

kvakvs
> Если уж хочется чего-то побыстрее, погляди на
> http://shootout.alioth.debian.org/
Да, да, Ада на втором месте, я знал это, да здравствуют Ада и сильная типизация! :)

#12
21:07, 25 дек. 2011

На С# можно делать игры.
Если есть необходимость в расширении движка, то
может помочь применение многопоточности.
В принципе на С# можно надеяться делать культные игры, но сразу с расчетом применения
многопоточности и шейдеров.
Да и сейчас уже (конец 2011) четырехядерный процессор становиться как бы стандарт де-факто.
Лично мне С# - не нравится. ИМХО ИМХО ИМХО.
Я лично предпочитаю писать на С++ с простой немудренной оптимизацией, чем то же самое
изварачиваться во всем что можно и получишь в итоге всё равно не лучше простого кода на С++.
Вот так вот!

А то что скорость в 15 раз, это потому что на С# нужны обертки для применения 3D АПИ.
машинный OpenGL и TaoFramework.
Обычно не такая просадка, но когда применяются функции обработки изображений типа фотошоп, то
не быстрая математическая библиотека у TaoFramework начинает влиять.

zlos
Согласен с тем что, что-то переводиться в машинный, но не всё!
Иначе невозможно было держать такой функционал (+ якобы для всех языков(JIT))

#13
22:14, 25 дек. 2011

Andconst
> Если есть необходимость в расширении движка, то
> может помочь применение многопоточности.
WTF IM READING *_*

>А то что скорость в 15 раз, это потому что на С# нужны обертки для применения 3D АПИ.
рендер в играх намного медленнее, именно сам процесс рендера а не вызовы апи (будь то напрямую или через обертку)

#14
0:12, 26 дек. 2011

Andconst
> Согласен с тем что, что-то переводиться в машинный, но не всё!
Переводится всё. Так оно устроено. Языки транслируются в промежуточный байт-код, байт-код при запуске в машинный код.

Страницы: 1 2 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.