А что по скорости?
Sep. 29th, 2012 03:39 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Регулярно можно видеть рассуждения, мол напишем за 20 минут наш проект на фичастом языке сверхвысокого уровня H, а критические по производительности участки кода сделаем на быстром низкоуровневом языке C. Что-то у меня ощущение, что об этом чаще говорят, чем применяют. Я поспрашивал знакомых программистов, тех что поближе, - подобным не занимаются. Один, говорит, пытался, а потом просто стал писать на плюсах. Даже в интернетах, читал о подобном только в исполнении
levgem и
lionet. В связи с чем пара вопросов:
1) Переписываете ли вы куски кода на низкоуровневом языке в угоду производительности?
2) Какой язык вы для этого используете?
Я ведь правильно понимаю, что нет других низкоуровневых языков кроме сишечки? Биндинги ведь только к ней делаются.
![[profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
1) Переписываете ли вы куски кода на низкоуровневом языке в угоду производительности?
2) Какой язык вы для этого используете?
Я ведь правильно понимаю, что нет других низкоуровневых языков кроме сишечки? Биндинги ведь только к ней делаются.
(no subject)
Date: 2012-09-29 03:05 pm (UTC)LinkedListNode
{
T value;
LinkedListNode* next;
}
class LinkedList
{
LinkedListNode* root;
...
}
typedef LinkedList MyList;
typedef LinkedList HisList;
В С++ это передается как есть, для Шарпа генерируется следующие структуры LinkedListNode_instantation_int, LinkedList_instantation_int, LinkedListNode_instantation_SomeStruct, LinkedList_instantation_SomeStruct:
LinkedListNode_instantation_int
{
int value;
LinkedListNode* next;
}
class LinkedList_instantation_int
{
LinkedListNode_instantation_int *root
}
Для HisList тоже самое. Что-то типа инстанцирования шаблонов. Все это с поддержкой области видимости. LinkedList < SomeTemplate < SomeOtherTemplate < int > > > то же поддерживается. Вопрос - не велосипед ли я изобретаю?
P.S.: Перед тем, как прочел этот пост, сидел отлаживал описанную выше утилиту.
(no subject)
Date: 2012-09-29 03:27 pm (UTC)Если структуры действительно сложные, то писать обходчики на С++ - это адский ад. Какие преимущества дает цепепе? Какие преимущества перед unsafe C#, который достаточно быстр (http://stdray.livejournal.com/73674.html?thread=377546#t377546) и может простым и прозрачным образом общаться со структурами данных, описанными на Nemerle?
(no subject)
Date: 2012-09-29 04:12 pm (UTC)Я не знаю насколько ансейф С# быстрый в реальности, а не на тестах. В С++ я почти уверен, в С# не уверен. Тем более на плюсах у меня есть немалый опыт, на С# опыта нет, я сразу начал писать на Немерле. Шаблоны опять же. OpenMP опять же. Куча нативных библиотек опять же. И т.д.
(no subject)
Date: 2012-09-29 04:25 pm (UTC)Если из Nemerle убрать паттерн-матчинг, макросы и TCO, то получится Сишарп. Что касается обхода структур, то я не понимаю, на чем там можно в плюсах сэкономить. Адресная арифметика здесь мало применима, а для распараллеливания есть PLINQ, async/await (в C#5 и Немерле) и Async монада для Nemerle.
(no subject)
Date: 2012-09-29 04:20 pm (UTC)В С++ я почти уверен, в С# не уверен. На С++ у меня большой опыт, на шарпе опыта нет почти. Темплейты опять же, куча нативных библиотек, OpenMp, и т.д.