dmitry-st писал(а):
Думаю будет полезной тема в которой можно будет выкладывать тесты на скорость.
Производительность - вообще интересная вещь. Вот тут мы уже обсуждали этот момент:
http://fforum.winglion.ru/viewtopic.php?f=34&t=1708Форт объективно будет уступать в производительности. Весь вопрос в том, на сколько именно и страшно ли это для практики. На сегодня есть несколько принципиальных ответов, что делать, если задача решается медленно:
1. Ассемблерная вставка, оформленная как слово Форта.
2. GPU.
3. Сеть/облако (при наличии доступа, пригодности задачи к такому распараллеливанию и навыков).
4. FPGA-ускоритель (аналогично предыдущему).
Большой круг задач на сегодня не требует запредельной производительности, или же эта производительность подлежит решению по пп. 1-2. Сила и полезность Форта проявляется в основном в возможности быстро менять порядок действий и оперативно писать сценарии запуска (а не пересобирать всю систему и опять искать, где там в интерфейсе кнопка запуска нужной функции). В этом плане ручное профилирование позволяет выписать алгоритмы, которые стоит ускорить. Те же тесты довольно синтетические, если будет очень нужно ускорить сортировку, оптимизирующий компилятор Форта даст гораздо меньше эффекта, чем подключение к программе на Форте внешней библиотеки, написанной на подходящем языке.
Относительно свежее:
http://fforum.winglion.ru/viewtopic.php?f=23&t=3033Это к вопросу, что можно надстроить над OpenGL. Форт не делает ничего из графики, но чем качественнее и эффективнее драйверы видеокарты, тем быстрее строится изображение. В данном случае Quark прицепился к огромному локомотиву под названием OpenGL и автоматически получает его улучшения.
Аналогичные рассуждения можно применить и к другим подобным задачам. От Форта берем свойство "разумными и небольшими усилиями получаем 80% результата, пусть даже в виде мимикрии под другие технологии" - см. нашу тему про структуры, у меня в решении явная мимикрия, STRUCT; даже не пытается проверять наличие открывающего STRUCT, но выглядит "как настоящее". Внутри могут быть оптимизированные вставки БПФ, матричных операций, графики и т.п., оформленные в виде ассемблерных/Cxx/др. подпрограмм, на которые приходится 90+% вычислительной нагрузки всей программы. Форт просто едет на этом сверху, обеспечивая прослойку приятного синтаксиса (DSL).