Юра!
Ты нигде не написал, какой у тебя был аргумент. 10000?
А ошибку я тоже у себя нашел, спасибо.
Арк

PS. У себя на Рефал6 нашел странности.
Для начала проверил, что отождествление vA vA e транслируется также как и
ta eA ta eA e.
Это нормально. Но поиск старого терма делается без оптимизаций, на общих
основниях.
Поэтому поменял образец на sa eA sa eA e, надеясь, что будет
оптимизированное удлинение.
Не тут то было. Посмотрел компилятор - оптимизация не работает, хотя
присутствует, но то ли с ошибкой, то ли с сознательной блокировкой
(какой-то ид OVSYM вместо OSYM стоит).
Разблокировал. Странлировал.
Время работы для 10000 упало вдвое (0.54 сек). Отлично. Но дальше полезла
чертовщина.
С увеличением N время стало расти не квадратично, как раньше, а круче!
И для 100000 стало медленнее чем раньше (114 сек вместо 100). Это я уже не
понимаю.
Нет ли тут каких эффектов, что если мы по длинному списку бежим быстрее
(меньше действий), то все начинает работать медленнее? Может из-за каких-то
свойств кэша?
Аркадий

вт, 26 февр. 2019 г. в 13:41, Yuri Klimov yuri_AT_klimov.net <refal@botik.ru
>:

> Добрый день!
>
> Пример Аркадия на Рефал+:
>
> $func? EX sN eS = eS;
> EX \{
>   0 eS = eS;
>   sN eS , 'abc' : e sX e , sX eS :: eR, # \{ eR : vA vA e; }, <EX <Sub sN
> 1> eR>;
> };
>
> Я ошибся. По умолчанию в компиляторе были выключены оптимизации и включен
> режим отладки. Теперь время около 0.62 секунд.
>
> Пример с двумя iter из документации в приложении. Требует heap'а чуть
> поменьше (1ГБ против 2ГБ). Считает 10.5 секунд.
>
> Второй пример Аркадия на Рефал+ считает без heap'а за около 0.76 секунд:
>
> $func EX1 sN eS = eS;
> EX1 sN eS, sN eS : {
>   sN vA vA e = <Next sN eS>;
>   0 e = eS;
>   sN e = <EX1 <Sub sN 1> 'a' eS>;
> };
>
> $func Next sN eS = eS;
> Next {
>   sN = ();
>   sN sX eS = {
>     'abc' : e sX sY e = <EX1 sN sY eS>;
>     = <Next <Add sN 1> eS>;
>   };
> };
>
>
> С уважением,
>      Юрий Климов
>
> P.S. Во втором примере ошибка:
>
>> EX1 sN eS : {
>> // Goal!
>>    0 e = eS;
>> // eS is unacceptable
>>    sN vA vA e = <Next sN eS>; // tail recursion, eS is not empty
>> (otherwise previous sentence works)
>> ...
>
> Надо эти два случая переставить местами, а то иначе последних (самый левый
> в строке) символ не проверяется на повторы.
>
> On Tue, 26 Feb 2019 at 09:29, Sergei M. Abramov abram_AT_botik.ru <
> refal@botik.ru> wrote:
>
>> День добрый,
>>
>> > Запустил исходный пример Аркадия на Рефале+ (с компиляцией C++).
>> > Heap пришлось увеличить до 2GB. Время - 2.05 секунды.
>>
>> Юра, сделайте с двумя $iter-ами, пожалуйста.  Хочется и на текст
>> полюбоваться, и на прогон.
>>
>> Под руками системы нет, а в сухую (без воды в бассейне) и облажаться
>> могу...
>>
>> Всего доброго,
>>
>> Сергей Абрамов
>>
>>
  • Re:... Sergei M. Abramov
  • Re:... Arkady Klimov arkady . klimov_AT_gmail . com
  • Re:... Andrei Klimov andrei_AT_klimov . net
  • RE:... Александр Коновалов a . v . konovalov87_AT_mail . ru
  • Re:... Sergei M. Abramov
  • Re:... swi_AT_cnshb . ru
  • Re:... Arkady Klimov arkady . klimov_AT_gmail . com
  • Re:... Yuri Klimov yuri_AT_klimov . net
  • Re:... Sergei M. Abramov
  • Re:... Yuri Klimov yuri_AT_klimov . net
  • Re:... Arkady Klimov arkady . klimov_AT_gmail . com
  • Re:... Yuri Klimov yuri_AT_klimov . net
  • Re:... Yuri Klimov yuri_AT_klimov . net
  • Re:... Arkady Klimov arkady . klimov_AT_gmail . com
  • Re:... Andrei Klimov andrei_AT_klimov . net
  • Re:... Anton Orlov orlovan_AT_gmail . com
  • Re:... Arkady Klimov arkady . klimov_AT_gmail . com
  • Re:... Anton Orlov orlovan_AT_gmail . com
  • Re:... Arkady Klimov arkady . klimov_AT_gmail . com
  • Re:... Arkady Klimov arkady . klimov_AT_gmail . com
  • Re:... Anton Orlov orlovan_AT_gmail . com

Ответить