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

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

Страницы: 1 2
#15
10:58, 26 дек. 2011

Ребят, спасибо за ответы.

ALTAIR
> а ты в простом пейнте их открой
Открывал, спокойно можно скроллить текущее положение, редактировать картинку. Paint.NET умирает на больших картинках (обычное фото с моего телефона — 4000х3000 пикселей). Попробовать сдвинуть слой с места — смерти подобно, очень сильно все тормозит. Применение эффектов тоже заметно медленнее, чем в фотошопе.

В общем, идея .NET она красивая, но что там с производительностью — до сих пор не понятно. Ладно, попробую таки на .NET игру написать :)
Жаль, что .NET не развивается в сторону увеличения контроля над выполнением программы. В том же позорном Mono есть возможность указать JIT-компилятору, где именно применять SIMD-инструкции.


#16
11:37, 26 дек. 2011

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

#17
11:49, 26 дек. 2011

gammaker
> Поэтому, переводится не всё.
А ещё байт-код может интерпретироваться. :trf:

#18
11:50, 26 дек. 2011

Кстати, повторюсь, где-то я уже писал, что в моём тестовом примере вычисления простых чисел решетом Эрастофена на C# всего на 10% медленнее, чем на C++ (проверял на Visual C++). Если вместо массивов использовать unsafe-указатели, то производительность такая же, как и в C++, потому что при доступе к массиву .NET проверяет выход за пределы массива, а через указатель он этого не делает. Так что даже эти 10% не уходят в никуда, а тратятся на проверки. Конечно, это только один тестовый пример. Чтобы знать точно, надо провести другие тесты, узнать, какая производительность у библиотеки классов .NET и сравнить с C++. Хотя стандартная библиотека C++ (в Visual C++, другие компиляторы не изучал) не самая быстрая, в чём я убедился, когда написал свои более быстрые (и удобные) велосипедные классы String и Array.
Моя мечта написать аналог библиотеки .NET на C++. Так я смогу объединить преимущества C++ с преимуществами, которые есть в .NET. Конечно, я буду учитывать недостатки .NET, чтобы не копировать их себе.

#19
12:07, 26 дек. 2011

gammaker
> Моя мечта написать аналог библиотеки .NET на C++. Так я смогу объединить
> преимущества C++ с преимуществами, которые есть в .NET. Конечно, я буду
> учитывать недостатки .NET, чтобы не копировать их себе.
Что мешает использовать Managed C++?

#20
12:50, 26 дек. 2011

Skyblade
> Что мешает использовать Managed C++?
Начинать проект на привязанном к винде языке уныло, тем более лучше это сделать на более удобно шарпе, чем кривом С++\CLI.

gammaker
> Код компилируется не при запуске, а при первом вызове функции.
Зависит от реализации. В винде все, что скомпилировалось сохраняется в prefetch-файлы в соответствующем каталоге и загружается из них, чтобы каждый раз заново не компилировать для ускорения.
По моему в моно вся программа компилируется при запуске на линухе (могу ошибаться). Ну .нет программы не обязательно компилируются, например моно под некоторые платформы только интерпретирует .нет проги.

#21
13:07, 26 дек. 2011

http://www.codeproject.com/KB/cross-platform/BenchmarkCppVsDotNet.aspx

#22
16:51, 26 дек. 2011

в С++ больше возможностей низкоуровневой оптимизации
но влобная реализация на С++ и C# без говнокода будут различаться не более чем на 10-15%

#23
0:27, 27 дек. 2011

gammaker

Вам аналог NetFramework будет написать для С++ относительно легче, так как для игр 90% от всего NET ничего не надо.

#24
4:34, 27 дек. 2011

А мне вот стало интересно, что за такие узкоспециализированные места, где С++ проигрывает C#?
---
По скорости, естественно.

#25
9:29, 27 дек. 2011

Ockonal
То что требует частого выделения небольших кусочков памяти.

#26
9:59, 27 дек. 2011

zlos
> То что требует частого выделения небольших кусочков памяти.
Не только, большие объёмы простой математики, особенно целочисленной. Но для геймдева это не актуально.

#27
10:12, 27 дек. 2011

zlos
> То что требует частого выделения небольших кусочков памяти.
Исправляется пулами памяти.

Mikle
> Не только, большие объёмы простой математики, особенно целочисленной.
Откуда инфа? В чем причины того, что C# уделывает в этой области C++?

#28
10:16, 27 дек. 2011

laMer007
Я плохо прочитал п.24, это случаи, когда C++ в я явном выигрыше. А инфа из собственных многочисленных тестов.

#29
14:04, 27 дек. 2011

Mikle
> laMer007
> Я плохо прочитал п.24, это случаи, когда C++ в я явном выигрыше. А инфа из
> собственных многочисленных тестов.
Раньше был один момент - в микрософтовском C++ плохо была реализована работат с 64 бит интами на x86 - на .NET можно было получить неплохой профит, например, при преобразовании double -> string (где эти опреации активно задействованы). Сейчас не знаю, как с этим дела обстоят.

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

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