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 использует какой-то хитрый алгоритм для суммирования. Интересно какой. Есть у кого-то доки, идеи ?
"Если Вы отличаетесь от меня, то это ничуть мне не вредит — Вы делаете меня богаче". Экзюпери
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.