P.S. На Refal+ версия EX1 растет примерно квадратично:
10000 0:00.76 real, 0.76 user, 0.00 sys
20000 0:02.88 real, 2.88 user, 0.00 sys
40000 0:11.75 real, 11.75 user, 0.00 sys
80000 0:51.48 real, 51.48 user, 0.00 sys
100000 1:23.53 real, 83.53 user, 0.00 sys
200000 6:21.94 real, 381.92 user, 0.00 sys

С уважением,
    Юрий Климов

On Tue, 26 Feb 2019 at 14:17, Arkady Klimov arkady.klimov_AT_gmail.com <
refal@botik.ru> wrote:

> Юра!
> Ты нигде не написал, какой у тебя был аргумент. 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:... 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
  • Re:... Arkady Klimov arkady . klimov_AT_gmail . com
  • Re:... Yuri Klimov yuri_AT_klimov . net

Ответить