Утечки пространства потребляют память иначе, чем действительные ленивые алгоритмы?

Утечка пространства обычно определяется выполнением программы, которая занимает больше места, чем необходимо. Совместимо ли такое определение с алгоритмами, которые требуют ленивой оценки для амортизированной эффективности времени?

Интересно, имеют ли они тенденцию демонстрировать различный образец в структурах thunk. Например, простая утечка пространства может выглядеть так:

1 + (2 + 3 + ...)

Было бы нормально для ленивого алгоритма, подобного древовидному поиску, создавать структуры одинакового размера?

У меня есть подозрение, что правильные ленивые шаблоны оценки будут иметь тенденцию выглядеть по-разному, что позволяет легко обнаружить фактические утечки. Например, структура может выглядеть так:

[...] : a : b : c

куда [...] part - это префикс, который не имеет ссылок и мог быть уже собранным. В таком случае ленивый алгоритм вполне может работать на O(1) пространство и не может быть утечки пространства, что делает различие очень четким.

Интересно, распространено ли это или существует более широкий спектр компромиссов между пространственной и временной эффективностью в ленивых языках.

РЕДАКТИРОВАТЬ: Возможный контрпример - постоянные структуры. Их легко отличить от космических утечек?

0 ответов

Другие вопросы по тегам