Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Применение C# на низком уровне. 
:(
    Опции темы
Mal Hack
Дата 21.11.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: нет
Всего: 261



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

использовать C# для низкого уровня, по сравнению с С++.

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

Как вы видите, круг задач описан, так что Holy Wars отменяются.
PM ICQ   Вверх
Sartorius
Дата 21.11.2006, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 1
Всего: 37



 Зачем использовать инструмент для тех задач для которых он не предназначен... Ты же не забиваешь гвозди отверткой... Можно конечно к C# - проекту подключить unsafe код, но зачем тогда вообще трогать .NET. 
 Кстати по поводу
Цитата

Скорость обработки большого кол-ва математических расчетов. 

был недавно удивлен заявлением MicroSoft о том, что C# очень даже неплохо с этим справляется... Потестил сам 
(Замерял время выполнения достаточно разнообразных операций над массивом). Шарп С++ не обогнал , но был близок...)))
что то вроде 5% отстования по времени... Это и понятно ... измерения ведь выполняются в откомпилированном JITerom коде...
PM MAIL ICQ   Вверх
Mal Hack
Дата 21.11.2006, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: нет
Всего: 261



Цитата(Sartorius @  21.11.2006,  22:10 Найти цитируемый пост)
Зачем использовать инструмент для тех задач для которых он не предназначен... Ты же не забиваешь гвозди отверткой... Можно конечно к C# - проекту подключить unsafe код, но зачем тогда вообще трогать .NET. 

Значит, как я понимаю, С# не предназначен для низкого уровня без извратов?
ЗЫ: С C# совсем не работал, только сейчас начина, поэтому возможности его не знаю.

Цитата(Sartorius @  21.11.2006,  22:10 Найти цитируемый пост)
(Замерял время выполнения достаточно разнообразных операций над массивом)

Интересуют более сложные задачи...
PM ICQ   Вверх
mr.DUDA
Дата 21.11.2006, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Mal Hack @  21.11.2006,  20:52 Найти цитируемый пост)
 На сколько оптимально, рационально с точки зрения:
- надежности реализации
- дальнейшего усовершенствования системы

Здесь полный порядок.

Вот почему о производительности ничего не сказано - непонятно. Хотя, при должной оптимизации (unsafe-код, stackalloc для буферов данных, типизация) будет работать "ну почти как" код скомпилированный из С++, использующий те же API для работы с железом. Самый-самый низкий уровень (тот, что на DDK) можно вынести в native DLL.


--------------------
user posted image
PM MAIL WWW   Вверх
Exception
Дата 21.11.2006, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Встречный вопрос - почему C#?
PM   Вверх
mr.DUDA
Дата 21.11.2006, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Mal Hack @  21.11.2006,  20:52 Найти цитируемый пост)
- Скорость обработки большого кол-ва математических расчетов.

Однозначно рулит C++/ASM, желательно с оптимизацией под конкретный процессор. Почему никто не пишет кодеки типа XviD на дотнете или жабе? Потому что хочешь сделать, чтобы работало быстро - сделай сам (сиречь, на сисемблере + SSE + MMX etc), а не полагайся на рантайм.

Цитата(Mal Hack @  21.11.2006,  20:52 Найти цитируемый пост)
- Организация параллельности и распределенности решаемых задач на суперкомпьютерах.

По поводу распараллеливания и использования нескольких ядер/процессоров/машин ничего не могу сказать, всё зависит от архитектуры, по которой строится взаимодействие. Сам по себе дотнет может обеспечивать некую оптимизацию на уровне JIT, но как на самом деле обстоят дела с генерируемым native-кодом, Гейтс его знает.

P.S. к слову, как раз сегодня читал занятную статью на dtf.ru о многопоточности под Win:
http://www.dtf.ru/articles/read.php?id=39888


--------------------
user posted image
PM MAIL WWW   Вверх
Mal Hack
Дата 21.11.2006, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: нет
Всего: 261



Цитата(mr.DUDA @  21.11.2006,  23:15 Найти цитируемый пост)
Здесь полный порядок.

Применительно к строго вышеизложенным задачам?


Цитата(mr.DUDA @  21.11.2006,  23:21 Найти цитируемый пост)
Однозначно рулит C++/ASM, желательно с оптимизацией под конкретный процессор. 

Угу, спасибо.


Цитата(mr.DUDA @  21.11.2006,  23:15 Найти цитируемый пост)
(тот, что на DDK)

Что такое DDK?

Цитата(mr.DUDA @  21.11.2006,  23:15 Найти цитируемый пост)
unsafe-код, stackalloc для буферов данных

Аналогично.

Т.е., как я понимаю, работу с девайсами крупные мат рассчеты луже организовывать на C++/ASM, а вот интерфейс пользовательского приложения на .NET, в частности C#.

ЗЫ: Как я понимаю, то что написано на C# под юниксовами системам не поднимется? Или можно как-то MSIL сделать?
PM ICQ   Вверх
Void
Дата 21.11.2006, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



Цитата(Mal Hack @  22.11.2006,  01:31 Найти цитируемый пост)
Как я понимаю, то что написано на C# под юниксовами системам не поднимется?

Mono — подымется, но с ограниченными возможностями (в частности, реализация WinForms пока в глубокой альфе), да и с производительностью у Mono проблемы.
Цитата(Mal Hack @  22.11.2006,  01:31 Найти цитируемый пост)
Что такое DDK?

Driver Development Kit
Цитата(mr.DUDA @  22.11.2006,  01:21 Найти цитируемый пост)
Сам по себе дотнет может обеспечивать некую оптимизацию на уровне JIT,

Боюсь, ни о каком автоматическом распараллеливании на уровне JIT или на каком либо ещё речь не идёт.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
mr.DUDA
Дата 22.11.2006, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Void @  21.11.2006,  22:37 Найти цитируемый пост)
Боюсь, ни о каком автоматическом распараллеливании на уровне JIT или на каком либо ещё речь не идёт.

На чём основано это утверждение ?


--------------------
user posted image
PM MAIL WWW   Вверх
Mal Hack
Дата 22.11.2006, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: нет
Всего: 261



И что ты понимаешь под автоматическом распараллеливании? Лично у меня это в голове не укладывается. Как мне какжется распараллеливание делается программно. Другое дело, что программа должна держать нити процесса...
PM ICQ   Вверх
Void
Дата 22.11.2006, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



Цитата(mr.DUDA @  22.11.2006,  11:42 Найти цитируемый пост)
На чём основано это утверждение ? 

На здравом смысле. Работы в области автоматического распараллеливания ведутся уже десятки лет, но сколько нибудь приличных результатов никто не добился, даже на функциональных языках, наилучшим образом подходящих для этой задачи из-за отсутствия разделяемых и изменяемых данных. А всё, что сейчас есть для императивных — это полуавтоматические средства вроде OpenMP.
Если бы JIT в .NET умел что-то подобное, MS уже трубила бы об этом всему миру.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0553 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.