Re[10]: Что не сделать на C#, что сделать на C++?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 04.06.11 21:12
Оценка:
Здравствуйте, khimiki, Вы писали:

K>Здравствуйте, gandjustas, Вы писали:



G>>За 10к рублей — нивопрос. Забесплатно ниче больше 20 строк писать не буду.


K>Я на Qt и OpenGL более сложную программу написал всего лишь за 15 минут когда знакомился с возможностями этой бибдиотеки в области трёхмерной графики.

Поздравляю.

K>Боюсь, ты на кывт гораздо больше времени в день проводишь. Это не коммерческая программа чтобы за неё денег просить, это Hello World трёхмерной графики.

Я не за свое время хочу денег, а за удовлетворение твоих потребностей.

K>Так что слив засчитан. Ты и твой дот нет в луже по этому вопросу.


Мальчик, ты еще так мало в жизни знаешь.
Re[8]: Что не сделать на C#, что сделать на C++?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 04.06.11 21:35
Оценка:
Здравствуйте, khimiki, Вы писали:

K>Пришлёшь пример, я его сразу на CodeProject помещу и имя твоё прославлю, а если не пришлёшь, то ты болтун с большой буквы Б.


3 минуты в гугле и... http://www.codeproject.com/KB/openGL/sharpgl.aspx
Начинай прославлять. Мое имя не надо, прославляй автора статьи.

Жду первых результатов через месяц, ссылка должна появиться в топе гугла. Или ты ты болтун с большой буквы Х
Re[27]: C# -- мертвый язык
От: jazzer Россия Skype: enerjazzer
Дата: 05.06.11 02:22
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Интересно, какие это задачи С++ требуют знание ассемблера?


Оптимизация. Хотя это не "задачи С++" в смысле языка, в языках типа Си/С++/Паскаль и т.п. очень легко понять, какой исходный код породил конкретный ассемблерный код, и соответственно подправить его либо вообще переписать на асме, благо все подобные языки поддерживают ассемблерные вставки.

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

PS Подозреваю, что настоящие гуру C# знают MSIL, а Java — байткод.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[11]: Что не сделать на C#, что сделать на C++?
От: khimiki  
Дата: 05.06.11 07:16
Оценка: -4 :))) :))
Здравствуйте, gandjustas, Вы писали:


G>Я не за свое время хочу денег, а за удовлетворение твоих потребностей.


У меня нет потребности в твоём труде. Просто нужно было вывести тебя на чистую воду, чтобы все увидели что ты пустышка в области программирования и твои слова о том, что на С# можно работать с аппаратно ускоренной графикой — это просто пустой трёп.
Re[9]: Что не сделать на C#, что сделать на C++?
От: khimiki  
Дата: 05.06.11 07:22
Оценка: -1 :))) :))) :)
Здравствуйте, gandjustas, Вы писали:

G>Здравствуйте, khimiki, Вы писали:


K>>Пришлёшь пример, я его сразу на CodeProject помещу и имя твоё прославлю, а если не пришлёшь, то ты болтун с большой буквы Б.


G>3 минуты в гугле и... http://www.codeproject.com/KB/openGL/sharpgl.aspx

G>Начинай прославлять. Мое имя не надо, прославляй автора статьи.

G>Жду первых результатов через месяц, ссылка должна появиться в топе гугла. Или ты ты болтун с большой буквы Х


Ты просто чудовище, а не программист. Я не собираюсь использовать непонятно кем написанные библиотеки для разработки своих программ, я прошу тебя написать пример используя студию и библиотеку из коробки. А если ты этого не понимаешь, ты ты просто детсадовец или притворяешься им. Лично я такого программиста как начальник отдела разработки взашей бы прогнал на улицу.
Re[10]: Что не сделать на C#, что сделать на C++?
От: -MyXa- Россия  
Дата: 05.06.11 09:41
Оценка:
Здравствуйте, khimiki, Вы писали:

K>Я не собираюсь использовать непонятно кем написанные библиотеки для разработки своих программ


Это фатальный недостаток некоторых библиотек.

K>Лично я такого программиста как начальник отдела разработки взашей бы прогнал на улицу.


В какой конторе ты начальник отдела разработки?
Если не поможет, будем действовать током... 600 Вольт (C)
Re[28]: C# -- мертвый язык
От: Sinix  
Дата: 05.06.11 10:09
Оценка:
Здравствуйте, jazzer, Вы писали:

J>PS Подозреваю, что настоящие гуру C# знают MSIL, а Java — байткод.

И даже не гуру, ибо msil (в теории оно зовётся cil, но всем пофиг) прост до безобразия — стековая машина, никаких регистров, автоматическая валидация всего что можно, включая балансировку стека.

Разбираться в результатах jit-а — этто нудятина, всё что выше — не сильно сложно.
Re[29]: C# -- мертвый язык
От: jazzer Россия Skype: enerjazzer
Дата: 05.06.11 10:41
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, jazzer, Вы писали:


J>>PS Подозреваю, что настоящие гуру C# знают MSIL, а Java — байткод.

S>И даже не гуру, ибо msil (в теории оно зовётся cil, но всем пофиг) прост до безобразия — стековая машина, никаких регистров, автоматическая валидация всего что можно, включая балансировку стека.

S>Разбираться в результатах jit-а — этто нудятина, всё что выше — не сильно сложно.


Ну, я имею в виду, не просто знают, а понимают, как он получается из их кода и как им следует свой код поменять, чтоб получить нужный результат.
Кстати, в C# разрешены MSIL-вставки?

Хотя в языках со сборкой мусора погоня за скоростью в мелких вещах, когда в любой момент может начаться сборка мусора, выглядит не очень осмысленной...
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[30]: C# -- мертвый язык
От: Sinix  
Дата: 05.06.11 11:05
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Ну, я имею в виду, не просто знают, а понимают, как он получается из их кода и как им следует свой код поменять, чтоб получить нужный результат.

И я про то же

J>Кстати, в C# разрешены MSIL-вставки?

Штатно — нет, но можно добавить несколько отдельных файлов на msil (придётся чуть повозиться с правкой файла проекта).

J>Хотя в языках со сборкой мусора погоня за скоростью в мелких вещах, когда в любой момент может начаться сборка мусора, выглядит не очень осмысленной...


Не совсем так. В теории
Автор: Mamut
Дата: 17.06.10
возможны даже GC с гарантированным максимальным временем остановки. Просто il не даёт никаких особых преимуществ по скорости в сравнении с c#.
Re[31]: C# -- мертвый язык
От: jazzer Россия Skype: enerjazzer
Дата: 05.06.11 13:03
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Просто il не даёт никаких особых преимуществ по скорости в сравнении с c#.

Он может дать скорость, когда компилятор делает не то. По крайней мере ,в С++ так — ты пишешь какой-то код, ожидая, что компилятор его определенным образом соптимизирует/раскидает по регистрам/упорядочит в памяти/во времени, а потом смотришь в дизассемблер — а там ужас какой-то.
В таких случаях приходится извращаться.

Не думаю, что C# такого не бывает и компилятор всегда генерит наилучший код из возможных, даже с JIT, так что по-хорошему, если стоит задача выжать максимум в рамках платформы, нужно и уметь читать сгенеренный код, и понимать, как и почему он такой получается, и как на него воздействовать.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[32]: C# -- мертвый язык
От: Sinix  
Дата: 05.06.11 13:12
Оценка: +1
Здравствуйте, jazzer, Вы писали:

J>Он может дать скорость, когда компилятор делает не то. По крайней мере ,в С++ так — ты пишешь какой-то код, ожидая, что компилятор его определенным образом соптимизирует/раскидает по регистрам/упорядочит в памяти/во времени, а потом смотришь в дизассемблер — а там ужас какой-то.

J>В таких случаях приходится извращаться.

Для c# такого практически не бывает. il очень прост и компилятор шарпа не содержит в себе никакой магии. Раскладыванием по регистрам занимается jit, его не подтюнишь
Re[10]: Что не сделать на C#, что сделать на C++?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 05.06.11 20:24
Оценка:
Здравствуйте, khimiki, Вы писали:

K>Здравствуйте, gandjustas, Вы писали:


G>>Здравствуйте, khimiki, Вы писали:


K>>>Пришлёшь пример, я его сразу на CodeProject помещу и имя твоё прославлю, а если не пришлёшь, то ты болтун с большой буквы Б.


G>>3 минуты в гугле и... http://www.codeproject.com/KB/openGL/sharpgl.aspx

G>>Начинай прославлять. Мое имя не надо, прославляй автора статьи.

G>>Жду первых результатов через месяц, ссылка должна появиться в топе гугла. Или ты ты болтун с большой буквы Х


K>Ты просто чудовище, а не программист.


Я не собираюсь использовать непонятно кем написанные библиотеки для разработки своих программ, я прошу тебя написать пример используя студию и библиотеку из коробки. А если ты этого не понимаешь, ты ты просто детсадовец или притворяешься им. Лично я такого программиста как начальник отдела разработки взашей бы прогнал на улицу.

Расслабься, я уже и начальником побывал, а теперь на себя работаю. И занимаюсь как раз тем, что использую "написанные неизвестно кем" программы\библиотеки, для решения задач заказчиков. Прибыльное знаешь ли дело, гораздо прибыльнее, чем писать что-то с нуля
Re[32]: C# -- мертвый язык
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 06.06.11 07:42
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Здравствуйте, Sinix, Вы писали:


S>>Просто il не даёт никаких особых преимуществ по скорости в сравнении с c#.

J>Он может дать скорость, когда компилятор делает не то. По крайней мере ,в С++ так — ты пишешь какой-то код, ожидая, что компилятор его определенным образом соптимизирует/раскидает по регистрам/упорядочит в памяти/во времени, а потом смотришь в дизассемблер — а там ужас какой-то.
J>В таких случаях приходится извращаться.

Извращаешься-извращаешься, а потом оказывается что компилятор нагенерил довольно-таки оптимальный код, и врукопашную его не обгонишь. Имхо единственный реальный сценарий применения ассемблера — задействование векторных вычислений (mmx, sse), автоматом это пока ни один компилятор делать не умеет.

Но только причем тут C++? Можно написать такую библиотеку и задействовать её из управляемого кода. Вот например accelerator может генерить sse для параллельных вычислений.

J>Не думаю, что C# такого не бывает и компилятор всегда генерит наилучший код из возможных, даже с JIT, так что по-хорошему, если стоит задача выжать максимум в рамках платформы, нужно и уметь читать сгенеренный код, и понимать, как и почему он такой получается, и как на него воздействовать.


Начну с конца: воздействовать на генеренный машинный код нельзя, поэтому никого не парит почему он такой получается. В принципе jit вылизывают постоянно и на подавляющем большинстве сценариев он генерит хороший код. Если даже этот код не совсем оптимален, то его вылизывание даст проценты. Гораздо эффективнее заниматься оптимизацией работы с памятью и алгоритмической оптимизацией.
Re[33]: C# -- мертвый язык
От: jazzer Россия Skype: enerjazzer
Дата: 06.06.11 10:38
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Здравствуйте, jazzer, Вы писали:


J>>Здравствуйте, Sinix, Вы писали:


S>>>Просто il не даёт никаких особых преимуществ по скорости в сравнении с c#.

J>>Он может дать скорость, когда компилятор делает не то. По крайней мере ,в С++ так — ты пишешь какой-то код, ожидая, что компилятор его определенным образом соптимизирует/раскидает по регистрам/упорядочит в памяти/во времени, а потом смотришь в дизассемблер — а там ужас какой-то.
J>>В таких случаях приходится извращаться.

G>Извращаешься-извращаешься, а потом оказывается что компилятор нагенерил довольно-таки оптимальный код, и врукопашную его не обгонишь.

Если бы я не видел своими глазами плохой сгенеренный код, я бы, наверное, тебе поверил.
Плюс если ты вчитаешься в то, что я написал, то скилл не в том, чтобы писать на асме, а в том, чтобы его читать и понимать (т.е. понимать как то, что он делает, так и почему он такой получился), и чтобы изменять свой неасмовый код таким образом, чтоб получился правильный асм (например, переупорядочить поля структуры, повставлять руками дырки, так что структура хоть и распухнет, но будет быстрее работать, переупорядочить куски кода в функции, и т.п.).

G>Имхо единственный реальный сценарий применения ассемблера — задействование векторных вычислений (mmx, sse), автоматом это пока ни один компилятор делать не умеет.


Умеет. Автовекторизация называется. Но плохо. Только в примитивных случаях.

G>Гораздо эффективнее заниматься оптимизацией работы с памятью и алгоритмической оптимизацией.

Букварь я читал, не надо мне его цитировать.

P.S. А как можно заниматься оптимизацией работы с памятью в управляемых языках, когда доступа к собственно памяти нету? Или речь о С/С++?
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[34]: C# -- мертвый язык
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 06.06.11 11:31
Оценка: :)))
Здравствуйте, jazzer, Вы писали:

J>Здравствуйте, gandjustas, Вы писали:


G>>Здравствуйте, jazzer, Вы писали:


J>>>Здравствуйте, Sinix, Вы писали:


S>>>>Просто il не даёт никаких особых преимуществ по скорости в сравнении с c#.

J>>>Он может дать скорость, когда компилятор делает не то. По крайней мере ,в С++ так — ты пишешь какой-то код, ожидая, что компилятор его определенным образом соптимизирует/раскидает по регистрам/упорядочит в памяти/во времени, а потом смотришь в дизассемблер — а там ужас какой-то.
J>>>В таких случаях приходится извращаться.

G>>Извращаешься-извращаешься, а потом оказывается что компилятор нагенерил довольно-таки оптимальный код, и врукопашную его не обгонишь.

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

J>Плюс если ты вчитаешься в то, что я написал, то скилл не в том, чтобы писать на асме, а в том, чтобы его читать и понимать (т.е. понимать как то, что он делает, так и почему он такой получился), и чтобы изменять свой неасмовый код таким образом, чтоб получился правильный асм (например, переупорядочить поля структуры, повставлять руками дырки, так что структура хоть и распухнет, но будет быстрее работать, переупорядочить куски кода в функции, и т.п.).

Нууу pragma pack помоему в любом учебнике есть и совсем без необходиомсти знать ассемблер.

G>>Имхо единственный реальный сценарий применения ассемблера — задействование векторных вычислений (mmx, sse), автоматом это пока ни один компилятор делать не умеет.


J>Умеет. Автовекторизация называется. Но плохо. Только в примитивных случаях.

"Плохо и в примитивных случаях" — считай нету.

J>P.S. А как можно заниматься оптимизацией работы с памятью в управляемых языках, когда доступа к собственно памяти нету?

Легко. Смотришь профайлером где много памяти выделяется и\или много циклов GC происходит, потом ищешь более подходящий алгоритм, который меньше объектов создавать будет, по вкусу: переводишь объекты в структуры или организуешь пулинг долгоживущих объектов. А может просто настройка латентности gc поможет. В особо критичных местах может в 2-3 раза быстродействия добавить.
Re[35]: C# -- мертвый язык
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 06.06.11 12:32
Оценка: +3
Здравствуйте, gandjustas, Вы писали:

G>>>Извращаешься-извращаешься, а потом оказывается что компилятор нагенерил довольно-таки оптимальный код, и врукопашную его не обгонишь.

J>>Если бы я не видел своими глазами плохой сгенеренный код, я бы, наверное, тебе поверил.
G>Исключения бываю, но они не стоят того чтобы погружаться в ассемблерный код ради процентов прироста производительности.

Такое ощущение, что ты автор книг наподобие "С++ для чайников". Столько ненужных трюизмов и "слепых" советов!


G>Нууу pragma pack помоему в любом учебнике есть и совсем без необходиомсти знать ассемблер.


pragma pack может не всё.


G>"Плохо и в примитивных случаях" — считай нету.


Нет есть! Лично мне включение опции "/arch:SSE2" в майкрософтовском компиляторе ускорило программу раза в два. Ну и код я слегка подтюнинговал под это дело.
Re[35]: C# -- мертвый язык
От: jazzer Россия Skype: enerjazzer
Дата: 06.06.11 14:54
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>>>Извращаешься-извращаешься, а потом оказывается что компилятор нагенерил довольно-таки оптимальный код, и врукопашную его не обгонишь.

J>>Если бы я не видел своими глазами плохой сгенеренный код, я бы, наверное, тебе поверил.
G>Исключения бываю, но они не стоят того чтобы погружаться в ассемблерный код ради процентов прироста производительности.
Ну, на том и порешим Большинство замечательно без этих процентов обходится, софта, критичного к скорости, вообще мало довольно-таки, это обычно из области "хорошо бы", а не "жизненно необходимо".

J>>Плюс если ты вчитаешься в то, что я написал, то скилл не в том, чтобы писать на асме, а в том, чтобы его читать и понимать (т.е. понимать как то, что он делает, так и почему он такой получился), и чтобы изменять свой неасмовый код таким образом, чтоб получился правильный асм (например, переупорядочить поля структуры, повставлять руками дырки, так что структура хоть и распухнет, но будет быстрее работать, переупорядочить куски кода в функции, и т.п.).

G>Нууу pragma pack помоему в любом учебнике есть и совсем без необходиомсти знать ассемблер.

Вообще-то pragma pack обычно имеет ровно обратный эффект
Не говоря уже о том, что это крайне ограниченной применимости инструмент с довольно топорным действием
Ладно, вижу, ты не очень в теме, замнем. Те общие слова, что ты говорил, про алгоритмическую оптимизаци — они все правильные, конечно же. Но когда они все сделаны — остается только спуститься на уровень ассемблера.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[32]: C# -- мертвый язык
От: drol  
Дата: 09.06.11 17:02
Оценка: +3
Здравствуйте, jazzer, Вы писали:

J>Он может дать скорость, когда компилятор делает не то. По крайней мере ,в С++ так — ты пишешь какой-то код, ожидая, что компилятор его определенным образом соптимизирует/раскидает по регистрам/упорядочит в памяти/во времени, а потом смотришь в дизассемблер — а там ужас какой-то.


А можно увидеть реальный пример, в котором Вам удалось превзойти, допустим, Intel'овский оптимизатор ? Ну или даже стандартный VS2010, на худой конец ?

А то вот лично я неоднократно наблюдал кидание коллегами понтов на эту тему, но лишь только дело доходило до реального соревнования, то обычная Visual Studio влёгкую рвала любителей покодить на ассемблере на порядок Попытки с пятой некоторым удавалось приблизиться до разницы в десятки процентов, но не более.
Re: Что не сделать на C#, что сделать на C++?
От: Gaperton http://gaperton.livejournal.com
Дата: 10.06.11 19:29
Оценка: -4
Здравствуйте, snaphold, Вы писали:

S>Коли тут зашла речь про сравнение этих языков. Стало мне интересно.

S>Что с фундаментальной точки зрения не сделать на C#, что сделаешь на C++.

.NET Common Language Runtime.
Re[2]: Ваш кэп (-)
От: Gaperton http://gaperton.livejournal.com
Дата: 10.06.11 19:31
Оценка:
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.