ПрограммированиеФорумГрафика

Язык D для целей геймдева (9 стр)

Страницы: 18 9 10 1115 Следующая »
#120
20:31, 24 июля 2013

Bishop
никто не спорит с оптимизацией одной конкретной маленькой функции, даже тут на форуме есть треды где умножение матриц на SSE ускоряли в 1.5 раза от компилятора с опцией использовать SSE
но написать большой проект или библиотеку оптимальнее чем это сделает компилятор почти невозможно, потому как человеку свойственно писать так как ему потом будет удобно читать, компилятор же пишет writeonly код, который по своему ужасен.
допустим я понял, что намного проще и приятнее заставить компилятор сгенерировать такой код который мне нравится, чем писать этот код самому.

#121
20:46, 24 июля 2013

Pushkoff
> но написать большой проект или библиотеку оптимальнее чем это сделает
> компилятор почти невозможно, потому как человеку свойственно писать так как ему
> потом будет удобно читать, компилятор же пишет writeonly код, который по своему
> ужасен.
Ну программа состоит как бы из функций. Писать их все человеку особого смысла нет, писать часть - есть. Конечно можно написать всё, но это просто не эффективно, т.к. есть такие функции где оптимизировать нечего.

#122
20:52, 24 июля 2013

Bishop
> Ну программа состоит как бы из функций. Писать их все человеку особого смысла
> нет, писать часть - есть.
можешь привести примеры функций которые стоит писать?

#123
22:02, 24 июля 2013

Pushkoff
> можешь привести примеры функций которые стоит писать?
Легко. Вот первый попавшийся (будет в 2-х постах, сори). Весь этот объект целиком написал на asm из соображений скорости работы, т.к. обращения к нему идут очень часто.

+ Показать
#124
22:03, 24 июля 2013
+ Показать
#125
22:28, 24 июля 2013

Bishop
> Что-то проблем при написании кода это не вызывает. Ассемблер вообще самый
> старый, но почему-то все компиляторы создают свой выхлоп именно на нём... То
> что ты говоришь, это такие же глупости как тверждение что мол кирилица старая,
> потому она дерьмо.

Не равняй делфи с асемблером! Асемблер ещё долго не умрёт, он трижды делфи переживёт. Асемблер это мужик среди остальных языков. Старое не значит старое, а значит нахер уже невостребованное и оооочень даже заменимое.

Bishop
> Что-то проблем при написании кода это не вызывает.

"Я до сих пор рисую снеговиков на QBasic, нахер все Си и явы, Я СНЕГОВИКА МОГУ на QBasic нарисовать, СНЕГОВИКА! QBasic заябись язык и совсем не стар! У меня проблем при написании кода не вызывает это совсем."

Вот что я слышу со стороны когда мне говорят что делфи не вызывает проблем при написании кода.

#126
22:52, 24 июля 2013

Alex_Axel
Ну а что принципиально новое даст мне твой Д? Аж ничего. Ни в плане производительности он связку asm+pascal не порвёт, ни в плане удобства (т.к. своё я за годы выучил вдоль и поперёг + привык).

#127
22:56, 24 июля 2013

Bishop
> Ну а что принципиально новое даст мне твой Д? Аж ничего. Ни в плане
> производительности он связку asm+pascal не порвёт, ни в плане удобства (т.к.
> своё я за годы выучил вдоль и поперёг + привык).

D? В ж%:) D. Я уже говорил, пока D ни на что толком не способен, но он подаёт надежды, он слишком молод и надо подождать.

#128
23:04, 24 июля 2013

Alex_Axel
Хорошо, какую другую альтернативу ты можешь предложить против уже имеющейся связки, С + asm? Так Pascal и C равны по большому счёту.

#129
0:34, 25 июля 2013

Bishop
> Весь этот объект целиком написал на asm из соображений скорости работы, т.к.
> обращения к нему идут очень часто.
и что сильно быстрее стало?

Alex_Axel
твое мнение очень весомо в этом треде, даж не знаю что добавить к твоим словам, особенно понравились глубокие познания в области С++
может тебе стоит продолжить столь замечательную серию?
http://video.mail.ru/list/alexaxel/cpp

#130
1:37, 25 июля 2013

Bishop
> Ну думаю хоть это и не скромно звучит, но приведу себя :) Я активно использую
> этот язык (хоть не в чистом виде, ибо так удобнее, но все критические к
> скорости места пишу на нём (разбиение программы на функции он не отменяет))

Так а чего ты решил что от этого твоя программа стала быстрее или лучше? Примеры же просили не у кого ЧСВ выше. А у кого асм быстрее (более эффективнее) чем С/С++ от компилятора.

#131
3:30, 25 июля 2013

cNoNim
> и что сильно быстрее стало?
Точно не помню, но в несколько раз.

outcast
> А у кого асм быстрее (более эффективнее) чем С/С++ от компилятора.
Тут был мой топик про RLE-кодирование. Там C проиграл ручкам около 5% на простейшей функции.

P.S. Вообще мой наилучший результат это в почти 6 раз. Получен в довольно сложной ситуации при трассировке деревьев у аналитической мегатекстуры (правда сравниваю с pascalем, а не С, т.к. на последнем не пишу).

P.P.S. По поводу приведённого мной кода, нашел старую запись: http://catcompany.org/?p=16, там конечно не в 6 раз, но всёже.

#132
7:09, 25 июля 2013

Bishop
> Ну а что принципиально новое даст мне твой Д? Аж ничего.
  Почитай: http://dlang.org/templates-revisited.html. Там в конце приведён статический компилятор регулярных выражений, код которого почти понятен любому нубу. На С++ написать такое невозможно, а чтобы в нём ещё разобрался кто-нибудь кроме автора тем более.
  Если в С++ шаблоны представляют из себя перегруженное синтаксисом уродство, от которого почти нет никакого толку, то в D их настолько пересмотрели, что уже даже хочется использовать. Почти нигде нет ключевых слов template, а  typename нет вообще, любой класс по умолчанию шаблон, любая функция может иметь параметры времени исполнения и времени компиляции (шаблонные параметры) и всё это смотрится консистентно и гармонично, можно параметризовать шаблоны любым константным на момент компиляции объектом - вещественным числом, строкой или пользовательским классом или массивом (списки типов так и делаются), можно даже параметризовать просто отдельный участок кода, а не только функцию или класс. Не обязательно мутить рекурсивные шаблоны, как в С++, наоборот практически всегда их можно заменить итеративным кодом, в результате выполнения которого не будет создано дополнительных инстансов шаблона. Ну и static if конечно рулит настолько, что в крестах ему нет даже близких альтернатив и вряд ли в ближайшее время появятся.
  Во время компиляции можно вызывать любые константные функции - крестовый constexpr в одну строчку нервно курит. Вообще рейтрейсер времени компиляции на D выглядит почти как нативный код, даже не догадаешься, что практически весь написанный там код выполняется в момент сборки приложения и в результате компиляции в аутпут выходит законченное изображение.

  Да, кстати, функция writef в D, которая делает то же, что и printf в С - это шаблон, который разбирает переданные ему напаметры во время компиляции и сверяет их с форматной строкой (оперировать строками в компилтайме в D это не проблема, можно даже генерировать и подставлять код) и соответственно ей сразу превращается в функцию вывода нужной строки, где разбор уже отсутствует. То есть в D давно есть шаблонные списки аргументов произвольной длины. Причём чтобы работать с ними опять же на надо нагораживать рекурсивных шаблонов, потому что список передаётся как обычный массив, которым можно спокойно оперировать в компилтайме. Получается что тут всё даже ещё удобнее по сравнению с varargs времени выполнения в С/С++, хотя наверное уже во всех языках, где они есть, они реализованы точно так же удобно.

#133
8:30, 25 июля 2013

cNoNim

Оо! Чувак ты нашёл старые записи)) Да, тогда я только изучил основы С++ и прочитав первую книгу Шилдта воодушевился на подобную хрень)) Ну ты молодец) Я конечно понимаю, ты показал это с долей сарказма, но что сказать, это был 2011, а всё что было в 2011 остаётся в 2011)) Если интересно можешь найти мой канал ещё на ютубе, там хоть ролики от меня, как от лица дипломированного специалиста)))

#134
10:06, 25 июля 2013

Кстати, кому интересно продолжить дискуссию на тему C vs C++ то это можно сделать тут. http://versusit.ru/forum/c-vs-c
Часть сообщений я перенес.

Страницы: 18 9 10 1115 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.