Re[9]: Кастомные прекомпиляторы
От: Evgeny.Panasyuk Россия  
Дата: 24.11.18 08:34
Оценка:
Здравствуйте, Khimik, Вы писали:

EP>>Значение имеет итоговая скорость программы. Если программа в 2x-50x медленнее за счёт того что ты взял Delphi, то это плохая программа с точки зрения "высокоскоростного кода" который мы обсуждаем.

K>Итоговая скорость определяется скоростью некоторых ключевых (лимитирующих) участков,

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

K>только их и надо оптимизировать


Ну вот на C++ оптимизировать и эти bottleneck'и, и код в целом — на порядки проще чем на Delphi.

K>(возможно, переводить на ассемблер).


Вот как раз с современными компиляторами C++ это:
во-первых не нужно — даже для рукопашного лисапедения SSE/AVX используются intrinsics, а не ассемблер
во-вторых очень сомнительно что получится написать более быстрый asm код чем генерируют компиляторы C++ даже затратив значимые усилия (ау, сейчас 2018 год).
Пример для чего сейчас реально может потребоваться ASM — это отсутствие какой-либо инструкции в intrinsics (тогда __asm__ секция будет состоять из нескольких инструкций максимум), либо крайне специфичные техники типа корутин (по типу Boost.Context)
Re[3]: Кастомные прекомпиляторы
От: Khimik  
Дата: 25.11.18 05:32
Оценка:
S>>Осталось сравнить оба варианта на реальном измерении скорости. ПОдозреваю, что вариант с обычным for работать быстрее, потому что будет оптимизирован встроенным оптимизатором.

K>А в самом деле, как компилятор Delphi XE8 поддерживает многоядерность/многопроцессорность?


Просто прелестно, что на форуме программистов никто не смог или не захотел ответить на этот вопрос. Ну ладно, задам его в другом разделе
Автор: Khimik
Дата: 25.11.18
.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re: Кастомные прекомпиляторы
От: _NN_ www.nemerleweb.com
Дата: 25.11.18 09:26
Оценка:
Здравствуйте, Khimik, Вы писали:

Какую задачу решаете ?
Неясно вы уже написали ваш препроцессор и хотите его улучшить ?

Если вы хотите писать то есть готовые инструменты: всякие m4, T4 и т.п.
Если нужно ещё менять синтаксис и "понимать" код, то тогда нужен полноценный парсер Delphi.

K>(По ходу вопрос – насколько можно ещё оптимизировать этот код, или это уже предел?)

Тут нужно писать тесты и прогонять их.
На глаз сказать, что лучше, у вас точно не выйдет.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: Кастомные прекомпиляторы
От: Khimik  
Дата: 25.11.18 11:37
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Если вы хотите писать то есть готовые инструменты: всякие m4, T4 и т.п.


У меня вопросы — есть ли в Delphi m4 и T4, и что это такое (как-то кратко на пальцах, если можно.)
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re[3]: Кастомные прекомпиляторы
От: _NN_ www.nemerleweb.com
Дата: 25.11.18 11:56
Оценка:
Здравствуйте, Khimik, Вы писали:

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


_NN>>Если вы хотите писать то есть готовые инструменты: всякие m4, T4 и т.п.


K>У меня вопросы — есть ли в Delphi m4 и T4, и что это такое (как-то кратко на пальцах, если можно.)

Внешние препроцессоры не связаны с языком разработки.
Ими можно хоть простой текст генерировать.
Также как и препроцессором C можно генерировать что угодно, хоть Delphi.

Возможно, m4 не самый лучший язык, вот пример: https://github.com/tsuna/boost.m4/blob/master/build-aux/boost.m4
https://www.gnu.org/software/m4/manual/m4.html

Вот пример T4: https://docs.microsoft.com/en-us/visualstudio/modeling/code-generation-and-t4-text-templates?view=vs-2017

А если вам нужна интеграция в систему типов Delphi, то тут писать свой парсер.
Хотя, вполне вероятно, уже кто-то написал.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[5]: Кастомные прекомпиляторы
От: Ziaw Россия  
Дата: 27.11.18 11:15
Оценка:
Здравствуйте, Khimik, Вы писали:

K>У меня сильное подозрение, что Delphi — очень хороший язык, хорошо подходящий для высокоскоростных приложений, который пал жертвой неправильной моды (что-то вроде фишеровского убегания в программировании).


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

Насколько я помню, в делфи был довольно неплохой редактор форм. Других преимуществ что-то не припомню.
Re[6]: Кастомные прекомпиляторы
От: Khimik  
Дата: 27.11.18 19:22
Оценка:
K>>У меня сильное подозрение, что Delphi — очень хороший язык, хорошо подходящий для высокоскоростных приложений, который пал жертвой неправильной моды (что-то вроде фишеровского убегания в программировании).

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


На gamedev.ru один участник написал, что его игра на Щи++ была на 20% быстрее, чем на Delphi:

https://gamedev.ru/flame/forum/?id=181583

(таблица "сравнение с богами").
Это была Delphi 7, пост от 2013 года.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re[4]: Кастомные прекомпиляторы
От: std.denis Россия  
Дата: 27.11.18 20:26
Оценка:
K>>А в самом деле, как компилятор Delphi XE8 поддерживает многоядерность/многопроцессорность?
K>Просто прелестно, что на форуме программистов никто не смог или не захотел ответить на этот вопрос. Ну ладно, задам его в другом разделе
Автор: Khimik
Дата: 25.11.18
.


странные у тебя претензии, ты ж спрашивал про какой-то маргинальный компилятор
Re[5]: Кастомные прекомпиляторы
От: Khimik  
Дата: 27.11.18 21:58
Оценка:
K>>>А в самом деле, как компилятор Delphi XE8 поддерживает многоядерность/многопроцессорность?
K>>Просто прелестно, что на форуме программистов никто не смог или не захотел ответить на этот вопрос. Ну ладно, задам его в другом разделе
Автор: Khimik
Дата: 25.11.18
.


SD>странные у тебя претензии, ты ж спрашивал про какой-то маргинальный компилятор


Про низкоуровневую оптимизацмю я тоже спросил в первом посту темы.
Мой будущий перекомпилятор предполагается прежде всего как средство оптимизации — переписать код для финального релиза программы. И сразу возникает вопрос, насколько эффективной будет такая оптимизация.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re: Кастомные прекомпиляторы
От: serj.e  
Дата: 29.11.18 01:16
Оценка:
Поздравляю с "изобретением" метапрограммирования. Беда здесь в том, что из всего, что я видел, оно концептуально красиво реализовано лишь в трех языках: Common Lisp, D и Nim, первый из которых ну вот вообще не выбор для твоих задач, второй всю жизнь сырой, а третий молодой и не понятно, насколько далеко двинется. МП на плюсах — это классический пример "сделанного чужими для хищников", если говорить не о разворачивании одного-трех этажей шаблонов, а о полноценном compile–time-исполнении.
Re[7]: Кастомные прекомпиляторы
От: Ziaw Россия  
Дата: 29.11.18 04:42
Оценка:
Здравствуйте, Khimik, Вы писали:

K>>>У меня сильное подозрение, что Delphi — очень хороший язык, хорошо подходящий для высокоскоростных приложений, который пал жертвой неправильной моды (что-то вроде фишеровского убегания в программировании).


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


K>На gamedev.ru один участник написал, что его игра на Щи++ была на 20% быстрее, чем на Delphi:


На этом основании ты сделал вывод?

Delphi — очень хороший язык, хорошо подходящий для высокоскоростных приложений

Re[3]: Кастомные прекомпиляторы
От: swame  
Дата: 03.12.18 08:57
Оценка:
Здравствуйте, Khimik, Вы писали:


S>>Осталось сравнить оба варианта на реальном измерении скорости. ПОдозреваю, что вариант с обычным for работать быстрее, потому что будет оптимизирован встроенным оптимизатором.


K>А в самом деле, как компилятор Delphi XE8 поддерживает многоядерность/многопроцессорность?


Модуль System.Threading + книжка по программированию про потоки
Re[3]: Кастомные прекомпиляторы
От: Mr.Delphist  
Дата: 28.12.18 13:07
Оценка:
Здравствуйте, Khimik, Вы писали:


K>Мне пока главное — к Delphi этот m4 подключить нельзя?


Вроде ж современные Delphi имеют всякие pre-build/post-build хендлеры — так что можно (сначала пре-билдом запускаем M4 чтобы сгенерил целевые файлы, далее обычный билд эти сгенерённые файлики заюзает)
Re: Кастомные прекомпиляторы
От: LaptevVV Россия  
Дата: 28.12.18 13:38
Оценка:
K>Интересно, не пробует ли кто-то из авторов ЯП делать кастомные прекомпиляторы, которые может написать программист-юзер?
Макропроцессоры давно используют с этой целью.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.