Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт апр 16, 2024 14:41

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: время выполнения кода
СообщениеДобавлено: Пт ноя 17, 2006 14:49 
Не в сети

Зарегистрирован: Сб май 13, 2006 18:17
Сообщения: 42
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Прошу помощи, ибо сам так и не смог понять в чём дело :)
Код:
CREATE MASS 3 ALLOT
: TEST
                    2 BEGIN DUP MASS !
                          2 BEGIN DUP MASS 4 + !
                                 2 BEGIN DUP MASS 8 + !
     MASS @ 
     MASS @ MASS 4 + @ *
     MASS @ MASS 4 + @ * MASS 8 + @ *
     + + 
     BEGIN 242 /MOD SWAP 14 + DROP
     DUP 242 < UNTIL
     14 + DROP
                               1+ DUP 1000 > UNTIL DROP
                       1+ DUP 1000 > UNTIL DROP
                1+ DUP 1000 > UNTIL DROP
;

' NOOP MAINX !       
' TEST TO <MAIN>

S" test.exe" SAVE BYE


Вот такой тестовый код, будучи откомпиллирован в exe-файл, выполняется 5 минут на Pentium-II, а на Pentium-D где-то около 4.5 минуты.
Компиллирую на каждом компе отдельно, при этом Pentium-D вполне показывает свои 2.66 GHc на других задачах. Как такое может быть?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: время выполнения кода
СообщениеДобавлено: Пт ноя 17, 2006 15:21 
[quote="ld"]Прошу помощи, ибо сам так и не смог понять в чём дело :)
[/code]
Причины тормозящие данный код.

1. Большое количество операций в циклах и циклов в циклах.
2. Неоптимальное использование возможностей языка.
3. Трудно оптимизируемый код встроеным в SPF оптимизатором.
...

P.S. В рамках Форт подхода действия в циклах желательно
выносить в отдельные определения и давать осмысленно имя:)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 17, 2006 15:32 
ld
А можно узнать постановку задачи?..

Код:
14 + DROP

????? А просто DROP нельзя было написать?..

Код:
0
CELL -- a
CELL -- b
CELL -- c
CONSTANT /MASS

CREATE MASS /MASS ALLOT

: TEST
2 BEGIN DUP MASS a !
2 BEGIN DUP MASS b !
2 BEGIN DUP MASS c !
MASS a @
MASS b @ OVER *
MASS c @ OVER *
+ +
BEGIN 242 /MOD SWAP 14 + DROP
DUP 242 < UNTIL
14 + DROP
1+ DUP 1000 > UNTIL DROP
1+ DUP 1000 > UNTIL DROP
1+ DUP 1000 > UNTIL DROP
;

' NOOP MAINX !       
' TEST TO <MAIN>

S" test.exe" SAVE BYE


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 17, 2006 15:46 
Не в сети

Зарегистрирован: Сб май 13, 2006 18:17
Сообщения: 42
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
2Гость:
Спасибо, со всеми пунктами согласен, форт-чайник бо есмь :)
Но тем не менее, на Pentium-D то должно работать ну хотя бы в 3 раза быстрее за счёт разницы в тактовой частоте, казалось бы.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 17, 2006 16:04 
Не в сети

Зарегистрирован: Сб май 13, 2006 18:17
Сообщения: 42
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
2profiT:

Цитата:
А можно узнать постановку задачи?..


Перебираем все возможные комбинации из трех чисел от 2 до 1000 каждое, подставлям их в формулу, брутфорс одним словом. В тестовых целях поставил DROP-заглушки на выводы (Perl-скрипт потом их подхватывает). Соседнюю ветку смотрел, но пока неасилил :)


Код:
0
CELL -- a
CELL -- b
CELL -- c
CONSTANT /MASS

CREATE MASS /MASS ALLOT

: TEST
2 BEGIN DUP MASS a !
2 BEGIN DUP MASS b !
2 BEGIN DUP MASS c !
MASS a @
MASS b @ OVER *
MASS c @ OVER *
+ +
BEGIN 242 /MOD SWAP 14 + DROP
DUP 242 < UNTIL
14 + DROP
1+ DUP 1000 > UNTIL DROP
1+ DUP 1000 > UNTIL DROP
1+ DUP 1000 > UNTIL DROP
;

' NOOP MAINX !       
' TEST TO <MAIN>

S" test.exe" SAVE BYE


Спасибо :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб янв 13, 2007 15:27 
Не в сети
Аватара пользователя

Зарегистрирован: Чт авг 17, 2006 10:01
Сообщения: 53
Откуда: Владивосток
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
У меня при запуске этой задачи СПФ4 работает минуты 2 и задача вылетает втихую без всяких сообщений. Даже если без exe-ника делать (просто выполнить слово TEST), то консоль СПФ (в том числе и в СПФ с GUI) тоже вылетает.

_________________
Win2003 Ent R2
ASUS A7V266-E; Athlon XP 2000+; 512Mb; HDD: 2x120+15 Gb; GF 3 Ti2


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб янв 13, 2007 16:50 
Не в сети

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Не подтверждаю.
Отработало 5 минут и не вылетело.
Version 4.18 Build 001 at 01.Dec.2006

_________________
http://forth.org.ru/~ygrek


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

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


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

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


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

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