Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Сб май 27, 2017 10:07

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Сравнения скорости. Forth benchmarks.
СообщениеДобавлено: Вс апр 09, 2017 12:40 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 28, 2017 10:04
Сообщения: 21
Благодарил (а): 11 раз.
Поблагодарили: 0 раз.
Думаю будет полезной тема в которой можно будет выкладывать тесты на скорость.

На 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- |      
time | opt. | Timbre | no opt | coded | Forth | iForth | Forth | NCC | FLK | Gforth | Forth | Forth | eforth | +opt | PFE | Forth | TILE
| | | | | | | | | | | | | | | | |
sieve | 1.00 | - | 7.03 | 0.86 | 1.87 | 2.16 | 2.31 | 1.27 | 1.47 | 5.05 | 7.99 | 6.56 | 8.00 | 4.87 | 9.09 | 18.32 | 49.42
bubble | 1.00 | - | 8.28 | 0.87 | 2.34 | 2.32 | 2.20 | 7.12 | 1.61 | 6.25 | 9.69 | 10.41 | 10.94 | 6.49 | 11.11 | - | 28.67
matmul | 1.00 | - | 9.35 | 1.10 | 3.02 | 2.19 | 2.31 | 4.14 | 1.99 | 5.92 | 9.87 | 9.09 | 9.80 | 4.95 | 10.59 | - | 27.41
fib | 1.00 | 3.14 | 4.92 | 1.00 | 1.37 | 1.32 | 0.95 | 1.47 | 0.83 | 3.79 | 6.62 | 5.81 | 5.31 | 3.76 | 7.56 | 12.99 | 18.68


Может кто знает сравнения с участием SP-Forth...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Сравнения скорости. Forth benchmarks.
СообщениеДобавлено: Вс апр 09, 2017 12:48 
В сети
Аватара пользователя

Зарегистрирован: Чт дек 31, 2009 18:36
Сообщения: 1883
Откуда: Питер
Благодарил (а): 13 раз.
Поблагодарили: 30 раз.
dmitry-st писал(а):
Думаю будет полезной тема в которой можно будет выкладывать тесты на скорость.
И сколько повторять, что фраза "FORTH быстр" (как и "FORTH компактен") относятся к этапу разработки, а не времени исполнения? Впрочем, сравнения скорости языков всегда делались от безделья...

_________________
Когда я говорю "понимаю" - это не значит, что я согласен, не значит, что я понимаю и вообще не значит, что я слушаю тебя. /Чарли, "2 1/2 человека"/


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Сравнения скорости. Forth benchmarks.
СообщениеДобавлено: Вс апр 09, 2017 13:44 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 28, 2017 10:04
Сообщения: 21
Благодарил (а): 11 раз.
Поблагодарили: 0 раз.
Вот тут участвует SP-Forth и платный VFX: http://www.mpeforth.com/arena/benchmrk.fth

*************************************************
Pentium 4 2.8GHz, 512Mb DDR266 RAM, Windows XPpro
*************************************************

VFX VFX Forth for Windows v4.03 [build 2458]
SF3 SwiftForth 3.0.3 27-Sep-2006
iForth version 2.1.1662, generated 14:10:06, November 27, 2005.
SP-Forth Version 4.00 Build 017 at 26.Jan.2006
W32FS Win32Forth-STC version: 0.02.05 build: 957
gff gforth-fast 0.6.2

All with no specifics and no hackery

Test time including overhead (ms) VFX iForth SF3 SPF4 W32FS gff
DO LOOP 1 0 0 0 16 2
+ 1 0 15 0 0 3
M+ 4 0 0 0 0 9
* 3 16 16 0 15 6
/ 22 0 15 16 16 15
M* 5 16 16 15 0 7
M/ 14 15 0 16 16 88
/MOD 21 0 31 31 31 15
*/ 18 32 16 16 16 96
ARRAY fill 3 0 16 0 15 12
=====================================================================================
Total: 91 79 125 94 125 253

Win32 API: SendMessage 31 0 16 31 16 1
Win32 API: COUNTER 335 0 16 0 0 57
System I/O: KEY? 20 0 328 281 0 742
=====================================================================================
Total: 386 0 359 312 16 800

Eratosthenes sieve 1899 Primes 91 78 141 203 219 265
Fibonacci recursion ( 35 -> 9227465 ) 184 203 156 172 203 449
Hoare's quick sort (reverse order) 83 79 172 125 234 460
Generate random numbers (1024 kb array) 123 125 156 1031 156 236
LZ77 Comp. (400 kb Random Data Mem>Mem) 147 156 922 954 282 485
Dhrystone (integer) 107 125 297 140 234 365
=====================================================================================
Total: 735 766 1844 2625 1328 2260
Time (ratio to VFX): 1.00 1.04 2.51 3.57 1.81 3.07


*************************************************
Core2 Duo 2.0GHz, 2Gb RAM, Windows Vista Business, SP1
*************************************************

VFX VFX Forth for Windows v4.21 [build 2688]
SF3 SwiftForth 3.1.9 22-Dec-2008
iForth version 3.0.3, generated Jan 25, 2009.
SP-Forth Version 4.00 Build 017 at 26.Jan.2006
W32FS Win32Forth-STC version: 0.02.05 build: 957
gff gforth-fast 0.6.2

All with no specifics and no hackery

Test time including overhead (ms) VFX iForth SF3 SPF4 W32FS gff
DO LOOP 6 0 5 0 0 0
+ 5 0 5 16 0 15
M+ 5 16 7 15 16 23
* 5 0 7 0 16 9
/ 5 16 7 16 0 11
M* 6 0 8 0 15 9
M/ 6 0 8 15 0 65
/MOD 6 15 7 0 16 6
*/ 18 31 31 31 31 83
ARRAY fill 4 0 23 16 16 12
=====================================================================================
Total: 66 78 100 109 110 233

Win32 API: SendMessage 9 0 4 0 0 0
Win32 API: COUNTER 179 0 155 16 0 32
System I/O: KEY? 11 0 225 546 0 1220
=====================================================================================
Total: 199 0 384 562 0 1252

Eratosthenes sieve 1899 Primes 98 93 131 93 202 331
Fibonacci recursion ( 35 -> 9227465 ) 170 250 168 172 219 431
Hoare's quick sort (reverse order) 90 109 167 140 203 434
Generate random numbers (1024 kb array) 101 109 145 1451 140 312
LZ77 Comp. (400 kb Random Data Mem>Mem) 127 125 677 681 234 435
Dhrystone (integer) 77 78 240 125 218 288
=====================================================================================
Total: 663 764 1520 2667 1216 2231
Time (ratio to VFX): 1.00 1.15 2.29 4.02 1.83 3.37


******************************************
Core i7 3.4GHz, 8Gb RAM, Windows 7-64, SP1
******************************************

12 May 2012
===========
VFX VFX Forth for Windows v4.60 [build 3332]
SF3 SwiftForth i386-Win32 3.4.2 11-Feb-2012
iForth version 4.0.400, generated December 31, 2010.
SP-Forth Version 4.20 Build 001 at 21.Jan.2009
W32FS Win32Forth-STC version: 0.05.01 build: 273
gff gforth-fast 0.7.0

All with no specifics and no hackery

Test time including overhead (ms) VFX iForth SF3 SPF4 W32FS gff
DO LOOP 4 0 4 0 16 0
+ 5 0 4 0 0 0
M+ 4 0 5 15 16 0
* 5 0 5 0 0 16
/ 7 0 3 0 15 0
M* 4 0 2 0 0 0
M/ 4 0 3 16 0 15
/MOD 3 0 4 0 0 0
*/ 4 16 4 0 16 16
ARRAY fill 2 0 9 0 0 0
=====================================================================================
Total: 42 16 43 31 63 47

Win32 API: SendMessage 5 0 2 0 0 0
Win32 API: COUNTER 36 0 20 0 0 218
System I/O: KEY? 7 0 112 359 359 765
=====================================================================================
Total: 48 0 134 359 359 983

Eratosthenes sieve 1899 Primes 43 47 64 47 109 171
Fibonacci recursion ( 35 -> 9227465 ) 44 109 43 62 47 234
Hoare's quick sort (reverse order) 38 47 80 47 93 203
Generate random numbers (1024 kb array) 55 62 78 63 78 172
LZ77 Comp. (400 kb Random Data Mem>Mem) 65 78 306 93 109 249
Dhrystone (integer) 38 32 96 47 78 156
=====================================================================================
Total: 283 375 667 359 514 1105
Time (ratio to VFX): 1.00 1.32 2.36 1.27 1.82 3.90


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Сравнения скорости. Forth benchmarks.
СообщениеДобавлено: Вс апр 09, 2017 13:54 
В сети
Аватара пользователя

Зарегистрирован: Чт дек 31, 2009 18:36
Сообщения: 1883
Откуда: Питер
Благодарил (а): 13 раз.
Поблагодарили: 30 раз.
1. Практически все люди, страдающие хроническими заболеваниями, ели огурцы. Эффект явно кумулятивен.
2. 99,9% всех людей, умерших от рака, при жизни ели огурцы.
3. 100% всех солдат ели огурцы.
4. 99,7% всех лиц, ставших жертвами автомобильных и авиационных катастроф, употребляли огурцы в пищу в течение двух недель, предшествовавших фатальному несчастному случаю.
5. 93,1% всех малолетних преступников происходят из семей, где огурцы потребляли постоянно.

Есть данные и о том, что вредное действие огурцов сказывается очень долго: среди людей, родившихся в 1839г. и питавшихся впоследствии огурцами, смертность равна 100%. Все лица рождения 1869...1879 гг. имеют дряблую морщинистую кожу, потеряли почти все зубы, практически ослепли (если болезни, вызванные потреблением огурцов, не свели их уже давно в могилу). Еще более убедителен результат, полученный известным коллективом ученых-медиков: морские свинки, которым принудительно скармливали по 20 фунтов огурцов в день в течение месяца, потеряли всякий аппетит!

_________________
Когда я говорю "понимаю" - это не значит, что я согласен, не значит, что я понимаю и вообще не значит, что я слушаю тебя. /Чарли, "2 1/2 человека"/


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Сравнения скорости. Forth benchmarks.
СообщениеДобавлено: Вс апр 09, 2017 15:00 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 5979
Благодарил (а): 11 раз.
Поблагодарили: 95 раз.
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).


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Сравнения скорости. Forth benchmarks.
СообщениеДобавлено: Вс апр 09, 2017 15:37 
В сети
Аватара пользователя

Зарегистрирован: Чт дек 31, 2009 18:36
Сообщения: 1883
Откуда: Питер
Благодарил (а): 13 раз.
Поблагодарили: 30 раз.
Hishnik писал(а):
что делать, если задача решается медленно
Сначала - поменять программиста.
http://fforum.winglion.ru/viewtopic.php?p=33562#p33562

_________________
Когда я говорю "понимаю" - это не значит, что я согласен, не значит, что я понимаю и вообще не значит, что я слушаю тебя. /Чарли, "2 1/2 человека"/


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Сравнения скорости. Forth benchmarks.
СообщениеДобавлено: Пн апр 10, 2017 07:34 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 28, 2017 10:04
Сообщения: 21
Благодарил (а): 11 раз.
Поблагодарили: 0 раз.
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/


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Сравнения скорости. Forth benchmarks.
СообщениеДобавлено: Пн апр 10, 2017 11:22 
В сети
Аватара пользователя

Зарегистрирован: Чт дек 31, 2009 18:36
Сообщения: 1883
Откуда: Питер
Благодарил (а): 13 раз.
Поблагодарили: 30 раз.
dmitry-st писал(а):
Однако на лично мой субъективный взгляд C/C++ программиста сила Форта в максимальной производительности при сохранении контроля за машинным кодом.
Ну, во-первых, как мы уже с Вами выяснили, C-программистом Вас назвать нельзя. Во-вторых, С - дает полный контроль кода - от прозрачности всех его конструкций, до управления степенью оптимизации и правки промежуточного ассемблерного кода. В-третьих, FORTH никак не может давать максимальную производительность машины (т.к. его цель - максимальная производительность программиста). Конечно, Вы можете написать на своем FORTH суперскоростной частный компилятор (т.к. можете написать "все"), но это уже будет компилятор другого языка.

_________________
Когда я говорю "понимаю" - это не значит, что я согласен, не значит, что я понимаю и вообще не значит, что я слушаю тебя. /Чарли, "2 1/2 человека"/


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Сравнения скорости. Forth benchmarks.
СообщениеДобавлено: Пн апр 10, 2017 15:15 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 5979
Благодарил (а): 11 раз.
Поблагодарили: 95 раз.
dmitry-st писал(а):
Поэтому я спокойно смотрю на тесты где С впереди, так как не всегда нужна скорость такой ценой.

Тут я совершенно согласен.

Вопрос производительности поднят с очень правильной стороны. Действительно, у программиста нет какого-то спортивного ограничения добиваться нужных результатов строго путем переписывания кода и выбора нужных директив компилятора. Если производительности не хватает, есть обходные пути. В Форте они действительно проще, чем в Си из-за наглядной модели работы с памятью. Кроме того, FPU по конструкции стековый, так что Форт ложится на него очень хорошо. Можно использовать команды SSE/SSE2, что тоже довольно просто стыкуется с порядком описания памяти в Форте - в Си автоматическое применение SSE к коду вида for(i = 0; i < N; i++) s +=x[i]*y[i]; будет затруднено. В Форте, в целом, тоже, но добавление соответствующего слова с SSE внутри выглядит вполне органично.

За чем не следует гнаться, так это за оптимизацией стековых перестановок. Если брать синтетические тесты, то там, скорее всего, компилятор Си распределит переменные по регистрам, а аналогичный код на Форте будет работать со стеком, постоянно перемещая указатель и выполняя чтение-запись памяти. Это объективное "бутылочное горлышко" стековой организации вычислений, по сравнению с произвольно используемыми регистрами. К нему можно относиться двояко. Если принять это как объективную слабую сторону, можно просто стараться избегать негативного влияния стековых перестановок, не основывая на них вычисления с большим количеством итераций. А там, где это не критично, приоритет у читаемости и сопровождаемости программы. Если же пойти на поводу у моды, тратя силы на "оптимизирующий компилятор", то получается несоразмерная потеря времени на достижение несущественного улучшения. Могут быть, конечно, какие-то тактические оптимизации для двух-трех последовательных слов, манипулирующих данными на стеке, но на практике это не даст ощутимого эффекта с точки зрения основного назначения программы. Так что я тут склонен не рефлексировать по поводу производительности Форта. Она вполне приемлема.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Сравнения скорости. Forth benchmarks.
СообщениеДобавлено: Пн апр 10, 2017 18:20 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 28, 2017 10:04
Сообщения: 21
Благодарил (а): 11 раз.
Поблагодарили: 0 раз.
Hishnik писал(а):
За чем не следует гнаться, так это за оптимизацией стековых перестановок. Если брать синтетические тесты, то там, скорее всего, компилятор Си распределит переменные по регистрам, а аналогичный код на Форте будет работать со стеком, постоянно перемещая указатель и выполняя чтение-запись памяти. Это объективное "бутылочное горлышко" стековой организации вычислений, по сравнению с произвольно используемыми регистрами.

Согласен.
Когда нужна скорость любой ценой, например, для игр, то f2c из первого теста даёт тот самый быстрый Си из Форта) Этот черновой транслятор написан за месяц одним человеком и выложен на том же сайте с документацией...
Если задаться целью написать полноценный компилятор Форта у которого будут развязаны руки, то был ли там в исходном коде стек или были там поименованные переменные уже не будет играть никакой роли.
Другое дело что лично мне это не нужно и даже форты имеющие слишком умные оптимизаторы настораживают и требуют изучения.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Сравнения скорости. Forth benchmarks.
СообщениеДобавлено: Пн апр 10, 2017 18:51 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 5979
Благодарил (а): 11 раз.
Поблагодарили: 95 раз.
Игры в реальном времени очень зависят от видеокарты. Логику можно писать почти на каком угодно языке, и опять же, удобный язык плюс доступ к GPU или просто эффективно организованной библиотеке позволит быстрее написать игру, чем ручная оптимизация больших объемов кода.
В качестве простого примера:
http://fforum.winglion.ru/viewtopic.php?f=34&t=3029&start=25
Цель, разумеется, была в максимально точном воспроизведении интерфейса спектрумовской Elite. Только корабли уж в 3D, возможности OpenGL по освещению без участия программиста вполне неплохи.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB