C # без .NET Framework - PullRequest
       31

C # без .NET Framework

7 голосов
/ 24 октября 2009

Написание быстрых нативных приложений с вызовами API и т. Д. На современном кроссплатформенном языке программирования, таком как C #, было бы здорово, не так ли? Например, если вы хотите написать простую утилиту, которая поможет ИТ-специалистам в установке вещей, которым не нужны другие компоненты, на простом и современном языке программирования? или если вы хотите написать 3D-игру, она должна быть быстрой, а JIT просто сделает ее медленнее ...

Почему, почему это невозможно? Почему не существует родных современных языков программирования для этих вещей?

Ответы [ 7 ]

15 голосов
/ 24 октября 2009

C # и .Net являются собственным кодом. Я думаю, что вы неправильно понимаете JITter. Это не ВМ. Программа на C # компилируется в полностью нативный код перед выполнением любого из них.

Теперь проблема "нуждающихся в других компонентах" вызывает беспокойство. Дайте время, хотя. В наши дни вам будет сложно найти установку Windows без, по крайней мере, .Net 2.0, и даже пара основных дистрибутивов Linux включают моно из коробки.

7 голосов
/ 24 октября 2009

Не думайте, что JIT замедляет работу. JIT может оптимизировать для конкретного компьютера, на котором выполняется приложение, а не для обычного компьютера, такого как 386 или Pentium. Он может даже принимать более оптимальные решения по скорости и памяти при создании кода, потому что он точно знает, что доступно. И если JIT все еще делает вещи медленнее, вы можете NGEN их, чтобы JITting все было сделано заранее.

Как доказательство этого, учтите, что Quake был портирован на CLR пару раз, и в моих личных тестах частота кадров в секунду была выше при запуске Quake на CLR примерно в половине случаев я демонстрирую это.

3 голосов
/ 24 октября 2009

Показано, что скомпилированные .NET-программы работают так же быстро, как и C. Если вы хотите, чтобы это было очень просто, напишите его в ассемблере для вашего собственного процессора.

2 голосов
/ 24 октября 2009

Вы можете использовать инструмент Microsoft NGEN.EXE для создания собственного образа сборки .NET. См. документация MSDN NGEN . Microsoft уже думает о том, что вы получаете здесь.

Microsoft также делает инструмент ILMERGE.EXE для объединения нескольких файлов сборки в один. Это может граничить с оптимизацией и скоростью тоже.

0 голосов
/ 25 апреля 2013

Значит ли это, что мы можем полностью скомпилировать и связать программу на C #, используя (ограниченные) вызовы .NET, в автономный EXE-файл, который будет работать без установки .NET вообще?

К вашему сведению: проверка состояния серверов около 5000 серверов показала около 200 без даже .NET 2.0.

Это вызывает проблемы для кода, который должен выполняться на "всех экземплярах Windows". С .NET 4.0+, не включающим 2.0, это ухудшается, так как как на новых, так и на старых машинах Windows может не быть «правильного» .NET

0 голосов
/ 26 октября 2009

Как примечание, Mono полностью компилируется, исключая время выполнения. (Я думаю, что так они бегают на iPhone, что запрещает любой JIT.)

0 голосов
/ 24 октября 2009

есть, C. C можно использовать для написания любого приложения, когда-либо !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...