LINUX.ORG.RU

Трансляция C# в C

 , ,


0

4

Привет Лор. Недавно читал статью одного парня, который улетел в США работать в Microsoft Research.

В статье проскользнула тема трансляции кода C# в C код. И явно упоминулась фраза: «Какой смысл транслировать C# код в C, если не будет никакого прироста производительности».

Я вот писал немного на C# и на C.

- Разве может код C# работать с той же скоростью, что и код написанный на C?

Разве может код C# работать с той же скоростью, что и код написанный на C?

может и быстрее, если код на С костыльный и неэффективный, «трансляция C# в C» даст именно такой

wota ★★
()

Разве может код C# работать с той же скоростью, что и код написанный на C?

Нет.

Разве может код C# работать с той же скоростью, что и код транслированный в C?

Да.

anonymous
()
Ответ на: комментарий от Licwin

я не троллю

Просто спрашиваю, это каким же макаром код C# может работать быстрее C?

Сам придерживаюсь мнения, что быстрее C ничего нет. (assembler уже не используют почти)

kusanagi
() автор топика
Ответ на: комментарий от anonymous

а ух

Понятно. Но трансляция должна быть тогда очень эффективной. Кстати, вся статья впринципе намекает на то, что даже Microsoft особо не устраивает производительность C# платформы.

kusanagi
() автор топика

Зависит от того, как траслировать. Если втупую строчку за строчкой, добавляя всевозможные проверки, которые C# прячет от программиста, то наверное будет даже медленее. А если по уму, разбирать семантические конструкции из одного языка и переводить их в другой, то будет быстрее.

staseg ★★★★★
()

Не все так просто. Ты должен и сборщик мусора перевести, и автоматическую дефрагментацию памяти, и сверх-быстрый Эдем, и рефлексию, и встроенную сериализацию, и еще чего-нибудь. Почему же тогда новый переведенный код на Си должен стать быстрее? Подумай над этим.

dave ★★★★★
()
Ответ на: я не троллю от kusanagi

Сам придерживаюсь мнения, что быстрее C ничего нет. (assembler уже не используют почти)

код на си/си++/жаве обычно быстрее чем код написанный на асме. все по тому, что компиляторы знают об оптимизации гораздо больше чем программеры

redixin ★★★★
()

Разве может код C# работать с той же скоростью, что и код написанный на C?

Откуда вы такие беретесь?

encyrtid ★★★★★
()
Ответ на: я не троллю от kusanagi

Сам придерживаюсь мнения, что быстрее C ничего нет.

Заблуждение.

aedeph_ ★★
()
Ответ на: я не троллю от kusanagi

Просто спрашиваю, это каким же макаром код C# может работать быстрее C?

Теоретически - может и должен. Потому как JIT знает много больше, чем знает статический компилятор, и может намного лучше оптимизировать.

На практике же JIT пока не особо умные. Но это лишь вопрос времени.

Сам придерживаюсь мнения, что быстрее C ничего нет.

Ламерское мнение. Иди, учись.

anonymous
()

может конечно. никто не совершенен, и на сишке легче накосячить,чем на шарпике. очевидно, что в идеале сишка быстрее. альсо, идея с транслирование языков высокого уровня в более низкоуровневые боян. читайте про Vala. те же языки дотнета прежде чем загонять в рантайм транслируются в CIL. дай почитать статью твоего парня

Deleted
()
Ответ на: может быть от kusanagi

И что же быстрее?

Напомнило о якутской детской сказке, где говорится о том, кто на свете всех сильней ;)

dave ★★★★★
()
Ответ на: комментарий от Deleted

статья

В общем-то просто обзорная о работе в Microsoft Research. Прямо на первой странице хабрахабра. Там в той части, где ТС разговаривает с индусом.

kusanagi
() автор топика
Ответ на: комментарий от encyrtid

как это откуда

Без нормального образования. А вообще да конечно, через некоторое время такую чушь я перестану нести.

kusanagi
() автор топика

Разве может код C# работать с той же скоростью, что и код написанный на C?

Запросто, если это «хеллоуворлд»

Eddy_Em ☆☆☆☆☆
()
Ответ на: а ух от kusanagi

даже Microsoft особо не устраивает производительность C# платформы.

Очень даже их устраивает. Они говорят: «у вас устаревший компьютер, потратьте 100500 денег на апгрейд, тогда наш новый МаСтДаЙ-2020, написанный на 99.9% на C#, будет летать на вашей машине».

Eddy_Em ☆☆☆☆☆
()

Быстрее-не быстрее − какая разница? Пиши на том на чём больше отдача (быстрее и удобнее). Железо вывозит, прошла уже та эпоха когда экономили на каждом такте. Ну если уж совсем что то реалтаймовое надо наваять, тогда уж что, выбор очевиден...

Hertz ★★★★★
()

А я бы поставил вопрос по другому, насколько большее будет утечка памяти? СиШарп писатели настолько не заботятся об принудительном освобождении памяти, полагаясь на среду исполнения, что диву даёшься.

AlexVR ★★★★★
()

- Разве может код C# работать с той же скоростью, что и код написанный на C?

может. А может даже и быстрее, чем на С :)

просто С дает большую гибкость, а насколько код получится быстрым, зависит от кривизны рук программиста

Harald ★★★★★
()
Ответ на: комментарий от Hertz

Тогда лет на 300 о венде ничего не было бы слышно ☺

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от AlexVR

СиШарп писатели настолько не заботятся об принудительном освобождении памяти, полагаясь на среду исполнения, что диву даёшься.

Что-то у меня какое-то дежавю по поводу разработчиков огнелиса.

Eddy_Em ☆☆☆☆☆
()

Неплохо, но нужно ждать пока подтянется тяжелая артиллерия, иначе срача не будет.

anonymous
()
Ответ на: комментарий от AlexVR

А я бы поставил вопрос по другому, насколько большее будет утечка памяти? СиШарп писатели настолько не заботятся об принудительном освобождении памяти, полагаясь на среду исполнения, что диву даёшься.

Любопытно, а как ты собрался «принудительно освобождать память» в .NET? Присваивать переменной null? А то, знаешь, старых закаленных сишников и плюс-плюсников сразу можно определить по такому проколу.

dave ★★★★★
()
Ответ на: комментарий от encyrtid

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

вам виднее, я не пользуюсь говном .NET

wota ★★
()
Ответ на: я не троллю от kusanagi

Я использую. Для меня программа в 700 байт быстрее, чем бинарник, скомпиленый на C, в которого еще всю libc воткнули. Не знаю, как там в параллельных вселенных, не проверял

ms-dos32
()
Ответ на: комментарий от Eddy_Em

То есть, ты негодуешь по поводу использования Си++, а не C#? Кажется, ты не любишь ни то, ни другое?

dave ★★★★★
()
Ответ на: комментарий от ms-dos32

И ты можешь прямо любой нетривиальный алгоритм на ассемблере реализовать? Да ещё чтобы он работал? И проверяешь все входные данные ассемблером?

Сочувствую.

x3al ★★★★★
()
Ответ на: комментарий от redixin

Зато программёры могут изменить сам алгоритм, чтобы он лучше проходил узкие места архитектуры.

KivApple ★★★★★
()
Ответ на: я не троллю от kusanagi

Просто спрашиваю, это каким же макаром код C# может работать быстрее C?

Сам придерживаюсь мнения, что быстрее C ничего нет. (assembler уже не используют почти)

Школьник/абитуриент/студент? Кагбе aot, работа с голой памятью и unsafe секциии позволяют интересно баловаться. Плюс на интенсивном выделении/освобождении памяти обычно управляемые платформы быстрее

SlothSpot
()
Ответ на: комментарий от vazgen05

ну как

Ветка Development же. А спрашиваю из праздного интереса к сабжу. Где же мне дадут столь открытую информацию. И да, Лор торт =)

kusanagi
() автор топика
Ответ на: комментарий от anonymous

На практике же JIT пока не особо умные. Но это лишь вопрос времени

Согласен, это вопрос времени затрачиваемого на анализ и обработку кода. В JIT компиляторах это время надо минимизировать, по этому туда нельзя запихнуть и половины алгоритмов используюемых в статических компиляторах.

kim-roader ★★
()
Ответ на: комментарий от redixin

код на си/си++/жаве обычно быстрее чем код написанный на асме

А теперь встал и пошёл переписывать видеокодеки на жабу; быстро, решительно!

d ★★★★
()
Ответ на: а ух от kusanagi

производительность C# платформы

а что такое C# платформа?

jtootf ★★★★★
()

может даже быстрее.
/thread

Bad_ptr ★★★★★
()
Ответ на: статья от kusanagi

суть такова писать на си и транслировать в си совсем разные вещи. и в статье имелось ввиду, что транслированный в си код будет не производительнее CIL > runtime. Возьми valac. напиши хелловорлд. там есть флаг чтоб получить C-код. Так вот он будет из псевдообъектов и говна на сто строчек. и думается мне, что если транслировать шарпик будет ещё больше и хуже.

Deleted
()
Ответ на: комментарий от Deleted

ну дело не в том, что из «спичек и желудей» ^W^W^W псевдообъектов и говна. а в том, что GObject, glib подсчёт ссылок вместо сборщика мусора. если написать хелловорд на C# и на Vala, то хотя оно выглядеть будет почти одинаково, будут работать разные рантаймы. вот их производительность и надо сравнивать, но это как палец с чем-то более фичастым.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.