Forth http://fforum.winglion.ru/ |
|
Сравнения скорости. Forth benchmarks. http://fforum.winglion.ru/viewtopic.php?f=18&t=3122 |
Страница 1 из 2 |
Автор: | dmitry-st [ Вс апр 09, 2017 12:40 ] |
Заголовок сообщения: | Сравнения скорости. Forth benchmarks. |
Думаю будет полезной тема в которой можно будет выкладывать тесты на скорость. На http://benchmarksgame.alioth.debian.org/ Форт исчез к сожалению. Вот тут нашёл очень интересное сравнение производительности разных Фортов, а также Си: https://www.complang.tuwien.ac.at/forth ... mance.html Здесь hand-coded это Си. relative | f2c | | f2c | hand- | big- | | mx- | NT-Forth | | | Win32- | NT | |eforth | | This- | Может кто знает сравнения с участием SP-Forth... |
Автор: | gudleifr [ Вс апр 09, 2017 12:48 ] |
Заголовок сообщения: | Re: Сравнения скорости. Forth benchmarks. |
dmitry-st писал(а): Думаю будет полезной тема в которой можно будет выкладывать тесты на скорость. И сколько повторять, что фраза "FORTH быстр" (как и "FORTH компактен") относятся к этапу разработки, а не времени исполнения? Впрочем, сравнения скорости языков всегда делались от безделья...
|
Автор: | dmitry-st [ Вс апр 09, 2017 13:44 ] |
Заголовок сообщения: | Re: Сравнения скорости. Forth benchmarks. |
Вот тут участвует SP-Forth и платный VFX: http://www.mpeforth.com/arena/benchmrk.fth ************************************************* ************************************************* ****************************************** |
Автор: | gudleifr [ Вс апр 09, 2017 13:54 ] |
Заголовок сообщения: | Re: Сравнения скорости. Forth benchmarks. |
1. Практически все люди, страдающие хроническими заболеваниями, ели огурцы. Эффект явно кумулятивен. 2. 99,9% всех людей, умерших от рака, при жизни ели огурцы. 3. 100% всех солдат ели огурцы. 4. 99,7% всех лиц, ставших жертвами автомобильных и авиационных катастроф, употребляли огурцы в пищу в течение двух недель, предшествовавших фатальному несчастному случаю. 5. 93,1% всех малолетних преступников происходят из семей, где огурцы потребляли постоянно. Есть данные и о том, что вредное действие огурцов сказывается очень долго: среди людей, родившихся в 1839г. и питавшихся впоследствии огурцами, смертность равна 100%. Все лица рождения 1869...1879 гг. имеют дряблую морщинистую кожу, потеряли почти все зубы, практически ослепли (если болезни, вызванные потреблением огурцов, не свели их уже давно в могилу). Еще более убедителен результат, полученный известным коллективом ученых-медиков: морские свинки, которым принудительно скармливали по 20 фунтов огурцов в день в течение месяца, потеряли всякий аппетит! |
Автор: | Hishnik [ Вс апр 09, 2017 15:00 ] |
Заголовок сообщения: | Re: Сравнения скорости. Forth benchmarks. |
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). |
Автор: | gudleifr [ Вс апр 09, 2017 15:37 ] |
Заголовок сообщения: | Re: Сравнения скорости. Forth benchmarks. |
Hishnik писал(а): что делать, если задача решается медленно Сначала - поменять программиста.http://fforum.winglion.ru/viewtopic.php?p=33562#p33562 |
Автор: | dmitry-st [ Пн апр 10, 2017 07:34 ] |
Заголовок сообщения: | Re: Сравнения скорости. Forth benchmarks. |
Hishnik писал(а): Форт объективно будет уступать в производительности. У меня на это несколько другой взгляд... Даже по первому тесту видно что есть задачи где Форт быстрее Си скомпилированного с максимальной оптимизацией. Ещё вот тут Роман Каршиев тестировал на функции Аккермана https://www.linux.org.ru/news/linux-gen ... nt-3522193 O'Caml - 19сек. SPF4 - 21сек. VC7 - 24сек. asm - 26сек. C# - 27сек. Однако на лично мой субъективный взгляд C/C++ программиста сила Форта в максимальной производительности при сохранении контроля за машинным кодом. Именно это меня очень привлекает в Форте. Программист на С не знает что делает его скомпилированная программа, и зачастую не знает что он этого не знает, т.к. читают стандарт С считанные единицы... На Си последовательность вычислений операндов, аргументов функций и строк кода зависит от компилятора. Из-за этого достаточно нетривиальных проблем особенно при многопоточности. Чтобы на Си написать адекватный Форту по стабильности код (компилируемый при любом уровне оптимизации в предсказуемый результат), надо стать реальным параноиком и вычислять каждый чих отдельной строкой, соответственно заводить лишние переменные и при этом после каждой строки ставить барьер компилятора: Код: __asm__ __volatile__ ( "" ::: "memory" ); Поэтому я спокойно смотрю на тесты где С впереди, так как не всегда нужна скорость такой ценой. Вот так например программируют в тойоте на Си: https://habrahabr.ru/company/pvs-studio/blog/310862/ |
Автор: | gudleifr [ Пн апр 10, 2017 11:22 ] |
Заголовок сообщения: | Re: Сравнения скорости. Forth benchmarks. |
dmitry-st писал(а): Однако на лично мой субъективный взгляд C/C++ программиста сила Форта в максимальной производительности при сохранении контроля за машинным кодом. Ну, во-первых, как мы уже с Вами выяснили, C-программистом Вас назвать нельзя. Во-вторых, С - дает полный контроль кода - от прозрачности всех его конструкций, до управления степенью оптимизации и правки промежуточного ассемблерного кода. В-третьих, FORTH никак не может давать максимальную производительность машины (т.к. его цель - максимальная производительность программиста). Конечно, Вы можете написать на своем FORTH суперскоростной частный компилятор (т.к. можете написать "все"), но это уже будет компилятор другого языка.
|
Автор: | Hishnik [ Пн апр 10, 2017 15:15 ] |
Заголовок сообщения: | Re: Сравнения скорости. Forth benchmarks. |
dmitry-st писал(а): Поэтому я спокойно смотрю на тесты где С впереди, так как не всегда нужна скорость такой ценой. Тут я совершенно согласен. Вопрос производительности поднят с очень правильной стороны. Действительно, у программиста нет какого-то спортивного ограничения добиваться нужных результатов строго путем переписывания кода и выбора нужных директив компилятора. Если производительности не хватает, есть обходные пути. В Форте они действительно проще, чем в Си из-за наглядной модели работы с памятью. Кроме того, FPU по конструкции стековый, так что Форт ложится на него очень хорошо. Можно использовать команды SSE/SSE2, что тоже довольно просто стыкуется с порядком описания памяти в Форте - в Си автоматическое применение SSE к коду вида for(i = 0; i < N; i++) s +=x[i]*y[i]; будет затруднено. В Форте, в целом, тоже, но добавление соответствующего слова с SSE внутри выглядит вполне органично. За чем не следует гнаться, так это за оптимизацией стековых перестановок. Если брать синтетические тесты, то там, скорее всего, компилятор Си распределит переменные по регистрам, а аналогичный код на Форте будет работать со стеком, постоянно перемещая указатель и выполняя чтение-запись памяти. Это объективное "бутылочное горлышко" стековой организации вычислений, по сравнению с произвольно используемыми регистрами. К нему можно относиться двояко. Если принять это как объективную слабую сторону, можно просто стараться избегать негативного влияния стековых перестановок, не основывая на них вычисления с большим количеством итераций. А там, где это не критично, приоритет у читаемости и сопровождаемости программы. Если же пойти на поводу у моды, тратя силы на "оптимизирующий компилятор", то получается несоразмерная потеря времени на достижение несущественного улучшения. Могут быть, конечно, какие-то тактические оптимизации для двух-трех последовательных слов, манипулирующих данными на стеке, но на практике это не даст ощутимого эффекта с точки зрения основного назначения программы. Так что я тут склонен не рефлексировать по поводу производительности Форта. Она вполне приемлема. |
Автор: | dmitry-st [ Пн апр 10, 2017 18:20 ] |
Заголовок сообщения: | Re: Сравнения скорости. Forth benchmarks. |
Hishnik писал(а): За чем не следует гнаться, так это за оптимизацией стековых перестановок. Если брать синтетические тесты, то там, скорее всего, компилятор Си распределит переменные по регистрам, а аналогичный код на Форте будет работать со стеком, постоянно перемещая указатель и выполняя чтение-запись памяти. Это объективное "бутылочное горлышко" стековой организации вычислений, по сравнению с произвольно используемыми регистрами. Согласен. Когда нужна скорость любой ценой, например, для игр, то f2c из первого теста даёт тот самый быстрый Си из Форта) Этот черновой транслятор написан за месяц одним человеком и выложен на том же сайте с документацией... Если задаться целью написать полноценный компилятор Форта у которого будут развязаны руки, то был ли там в исходном коде стек или были там поименованные переменные уже не будет играть никакой роли. Другое дело что лично мне это не нужно и даже форты имеющие слишком умные оптимизаторы настораживают и требуют изучения. |
Автор: | Hishnik [ Пн апр 10, 2017 18:51 ] |
Заголовок сообщения: | Re: Сравнения скорости. Forth benchmarks. |
Игры в реальном времени очень зависят от видеокарты. Логику можно писать почти на каком угодно языке, и опять же, удобный язык плюс доступ к GPU или просто эффективно организованной библиотеке позволит быстрее написать игру, чем ручная оптимизация больших объемов кода. В качестве простого примера: http://fforum.winglion.ru/viewtopic.php?f=34&t=3029&start=25 Цель, разумеется, была в максимально точном воспроизведении интерфейса спектрумовской Elite. Только корабли уж в 3D, возможности OpenGL по освещению без участия программиста вполне неплохи. |
Автор: | KPG [ Сб дек 26, 2020 06:36 ] |
Заголовок сообщения: | Re: Сравнения скорости. Forth benchmarks. |
Ещё одна Форт пузомерка "ретро" железа. The ultimate Forth Benchmark Код: The Ultimate Benchmark is a competition held during retro computing events. The goal of this competition is not to find the fasted and most capable machine or Forth system, but to price the most active participant. List of Forth Implementations P.S. Не представлено результатов по железным Форт процессорам, но есть, например, DEC 3000-600 Alpha 21064 175Mhz |
Автор: | KPG [ Вс дек 27, 2020 11:29 ] |
Заголовок сообщения: | Re: Сравнения скорости. Forth benchmarks. |
Чья то сегодняшняя небольшая статья на Хабр (в аспекте деградации "Форт" ядра от реализации в минимальном базисе примитивов) наверное, близко уже обсуждаемым минимального базиса Форт примитивов на местном форуме или ezoteric /forth Сколько нужно примитивов для реализации форт системы? |
Автор: | KPG [ Вт янв 03, 2023 18:57 ] |
Заголовок сообщения: | Re: Сравнения скорости. Forth benchmarks. |
Forth_coremark Цитата: Forth_coremark предоставляет порт эталонного теста CoreMark для языка программирования Forth. Это позволяет сравнивать компиляторы Forth с компиляторами Forth и компиляторами C на одной и той же машине. Кроме того, forth_coremark позволяет сравнить стековые машины, запрограммированные на Forth, и процессоры, запрограммированные на C. Forth_coremark написан, используя ANS94, чтобы облегчить портирование и оптимизацию для максимально возможного количества сред Forth и машин на основе стека. Код: S" coremark.f" INCLUDED coremark Код: CoreMark Iterations/Sec GCC 5.5.0: 21428 Gforth 0.7.3: 1260 SwiftForth i386-Linux 3.7.8: 5461 VFX Forth for Linux 4.81: 8192 P.S. ForthFreak Код: : count 1+ dup 1- c@ ;
|
Автор: | KPG [ Вт янв 03, 2023 19:47 ] |
Заголовок сообщения: | Re: Сравнения скорости. Forth benchmarks. |
dmitry-st писал(а): На http://benchmarksgame.alioth.debian.org/ Форт исчез к сожалению. The Computer Language: 22.05 Benchmarks Game Сравнение производительности программ написанных на Forth и C (2003) Код: В забеге участвовали - VC6SP5; GCC-3.2-2; spf3.76-239; SPF4 билд 11.
spf4/ VC(opt) VC GCC SPF3 SPF4 c lider Ackermann's Function 0.032 0.087 0.036 * 0.073 2.2 Array Access 0.040 0.200 0.028 4.284 0.201 7.1 Exception Mechanisms 0.064 0.065 0.058 0.652 0.073 1.2 Fibonacci Numbers 0.104 0.154 0.111 0.943 0.161 1.5 Hash Access 0.533 0.577 0.528 3.575 0.354 0.6 Hashes, Part II 1.397 1.854 1.379 20.390 2.172 1.5 Heapsort 0.121 0.167 0.115 * 0.319 2.7 Hello World 1.287 1.282 1.690 1.311 1.400 1.0 List Operations 0.116 0.155 0.102 0.764 0.126 1.2 Matrix Multiplication 0.063 0.207 0.088 2.319 0.211 3.3 Method Calls 0.061 0.101 0.050 0.960 0.095 1.9 Nested Loops 0.011 0.181 0.080 0.300 0.216 19.6 Object Instantiation 1.056 1.127 1.142 3.743 1.765 1.6 Random Number Generator 0.083 0.100 0.040 * 0.096 2.4 Sieve of Eratosthenes 0.168 0.525 0.168 1.755 0.446 2.6 String Concatenation 0.019 0.015 0.015 0.105 0.014 0.9 Reverse a File 0.193 0.203 0.236 1.050 0.265 1.3 Spell Checker 0.679 0.840 0.823 2.412 0.784 1.1 Sum a Column of Integers 0.261 0.260 0.475 5.393 0.726 2.7 Count Lines/Words/Chars 0.362 0.680 0.352 8.411 0.321 0.9 Sums: 6.650 8.780 7.516 58.364 9.818 Особенности тестирования. Тестовая платформа - Microsoft WindowsXP, AMD Duron (Spitfire) 700MHz, L1 Cache 64Kb+64Kb, L2 Cache 64Kb, память 128Mb. VC запускался в двух режимах - с включенной оптимизацией по скорости и без. SPF-версии тестов были сделаны на основе тестов для gcc и gforth. Тесты с плавающей точкой в SPF3 не производились. |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |