[J] О суммировании чисел и хвостовой рекурсии
От: Mirrorer  
Дата: 11.04.07 18:21
Оценка: +1
Решил поиграться с J на КПК. Сравнить его в числомолотильной задачи с C#. Задачу взял влоб самую простую какую только смог придумать. Просуммировать числа от 0 до 10^7

Запускаем такую вещь на КПК
 +/ i.10^7
|out of memory
|   +/    i.10^7


Ние пойняв ....

Запустил на обычной машине.
 +/ i.10^7
5e13
   +/ i.10^12
|domain error
|   +/    i.10^12
   +/ i.10^9
|limit error
|   +/    i.10^9
   +/ i.10^8
5e15


Хоть считает. Уже хорошо. Но при подсчете суммы для 10^8 процесс скромно съедает 440 Мб памяти.

Может я чего не того творю ?
Все делалось на версии J601с
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re: [J] О суммировании чисел и хвостовой рекурсии
От: Mirrorer  
Дата: 12.04.07 07:49
Оценка: 7 (1)
Здравствуйте, Mirrorer, Вы писали:


M>Хоть считает. Уже хорошо. Но при подсчете суммы для 10^8 процесс скромно съедает 440 Мб памяти.


Продолжил игры.
НАписал простенький глагол
summ =: monad : 0
counter =. 0
sum =. 0
while. counter <: y.
 do. sum =. sum + counter
    counter =. counter +1.
end.
sum
)


Он работает как и положено. Память не кушает. НО

NB. Это вычисление работает около минуты
summ 10^7

NB. А это отрабатывает меньше чем за секунду, особого потребления памяти не видно
+/ i.10^7

NB. Вычисления этого я не дождался, прервал после минут 10 работы
summ 10^7

NB. А это вычислилось за 10 секунд, хоть и скушало 440 Мб памяти, как я уже говорил
+/ i.10^8


Из чего можно сделать вывод что аут оф мемори это скорее фича чем бага. J использует какой-то хитрый алгоритм для суммирования. Интересно какой. Есть у кого-то доки, идеи ?
"Если Вы отличаетесь от меня, то это ничуть мне не вредит — Вы делаете меня богаче". Экзюпери
Re[2]: [J] О суммировании чисел и хвостовой рекурсии
От: Mirrorer  
Дата: 12.04.07 07:52
Оценка:
Здравствуйте, Mirrorer, Вы писали:

Ошибка в предыдущем посте.
M>

M>NB. Вычисления этого я не дождался, прервал после минут 10 работы
M>summ 10^8
M>
"Если Вы отличаетесь от меня, то это ничуть мне не вредит — Вы делаете меня богаче". Экзюпери
Re[2]: [J] О суммировании чисел и хвостовой рекурсии
От: Mirrorer  
Дата: 12.04.07 09:11
Оценка:
Здравствуйте, Mirrorer, Вы писали:

Завершим упражнения в пенисометрии.
M>
M>NB. А это вычислилось за 10 секунд, хоть и скушало 440 Мб памяти, как я уже говорил
M>+/ i.10^8
M>


Написал то же на C#. 1,5 секунды.
"Если Вы отличаетесь от меня, то это ничуть мне не вредит — Вы делаете меня богаче". Экзюпери
Re[2]: [J] О суммировании чисел и хвостовой рекурсии
От: Трурль  
Дата: 12.04.07 09:45
Оценка:
Здравствуйте, Mirrorer, Вы писали:

M>Из чего можно сделать вывод что аут оф мемори это скорее фича чем бага. J использует какой-то хитрый алгоритм для суммирования. Интересно какой. Есть у кого-то доки, идеи ?


Что там хитрого? i.10^7 создаёт массив, +/ его суммирует.
Re[3]: [J] О суммировании чисел и хвостовой рекурсии
От: Mirrorer  
Дата: 12.04.07 09:48
Оценка:
Здравствуйте, Трурль, Вы писали:

Т>Что там хитрого? i.10^7 создаёт массив, +/ его суммирует.

А почему такое суммирование получается быстее чем циклом влоб ?
"Если Вы отличаетесь от меня, то это ничуть мне не вредит — Вы делаете меня богаче". Экзюпери
Re[4]: [J] О суммировании чисел и хвостовой рекурсии
От: Трурль  
Дата: 12.04.07 09:54
Оценка: 7 (1)
Здравствуйте, Mirrorer, Вы писали:

M>А почему такое суммирование получается быстее чем циклом влоб ?


Потому что интерпретировать не надо.
Re[5]: [J] О суммировании чисел и хвостовой рекурсии
От: Mirrorer  
Дата: 12.04.07 10:06
Оценка:
Здравствуйте, Трурль, Вы писали:

Т>Потому что интерпретировать не надо.


А. Ну да, точно. Туплю
"Если Вы отличаетесь от меня, то это ничуть мне не вредит — Вы делаете меня богаче". Экзюпери
Re[3]: [J] О суммировании чисел и хвостовой рекурсии
От: Кодт Россия  
Дата: 13.04.07 10:23
Оценка: +2
Здравствуйте, Трурль, Вы писали:

Т>Что там хитрого? i.10^7 создаёт массив, +/ его суммирует.


А у J не хватает мозгов сделать fusion этих функций?
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[4]: [J] О суммировании чисел и хвостовой рекурсии
От: Трурль  
Дата: 13.04.07 11:27
Оценка:
Здравствуйте, Кодт, Вы писали:

К>А у J не хватает мозгов сделать fusion этих функций?


А у кого хватает?
Интерпретатор просто распознаёт некоторые шаблоны, но +/ i. к ним не относится.
Re[5]: [J] О суммировании чисел и хвостовой рекурсии
От: Курилка Россия http://kirya.narod.ru/
Дата: 13.04.07 11:32
Оценка:
Здравствуйте, Трурль, Вы писали:

Т>Здравствуйте, Кодт, Вы писали:


К>>А у J не хватает мозгов сделать fusion этих функций?


Т>А у кого хватает?

Т>Интерпретатор просто распознаёт некоторые шаблоны, но +/ i. к ним не относится.

А что относится?
Re[6]: [J] О суммировании чисел и хвостовой рекурсии
От: Трурль  
Дата: 13.04.07 12:00
Оценка:
Здравствуйте, Курилка, Вы писали:

К>А что относится?

Например, +/ . А вообще — , исходники смотреть надо.
Re[7]: [J] О суммировании чисел и хвостовой рекурсии
От: Mikl Kurkov Россия  
Дата: 16.04.07 07:24
Оценка: 54 (3)
Здравствуйте, Трурль, Вы писали:

Т>Здравствуйте, Курилка, Вы писали:


К>>А что относится?

Т>Например, +/ . А вообще — , исходники смотреть надо.

Зачем исходники? Вот тут все расписано: Appendix B. Special Code.
--
Mikl
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.