2010-05-18 7 views
2

Извините мое невежество, поскольку я не компьютерный инженер, но с корнями в биологии. Я стал отличным поклонником предустановочных объектов (кусочек SO и R inferno от Patrick Burns) и хотел бы улучшить свои навыки кодирования. Вместо этого я думал о написании более эффективных функций и задал следующий вопрос.аккуратная/эффективная запись функций (сбор мусора) в R

Есть ли преимущества в удалении переменных, которые будут перезаписаны в начале следующего цикла, или это просто пустая трата времени? Для аргумента предположим, что размер старых и новых переменных очень схож или идентичен.

ответ

1

Нет. Автоматическая сборка мусора позаботится об этом просто отлично.

2

Я думаю, что это будет действительно зависеть от особенностей корпуса. В некоторых случаях, когда объект является большим, может быть хорошей идеей для rm(), особенно если он не нужен, и есть много других вещей, которые нужно сделать, прежде чем он будет перезаписан. Но опять же, невозможно понять обстоятельства, заключающиеся в том, что стратегия может быть дорогостоящей с точки зрения времени вычисления.

Единственный способ узнать, действительно ли это стоит, - попробовать в обоих направлениях и проверить с помощью system.time().

+0

+1 Для использования 'system.time()' для проверки производительности. Вы также можете просмотреть такие вещи, как «Rprof» или «profR» для профилирования кода. См. Этот вопрос для примера: http://stackoverflow.com/questions/2476946/creating-large-xml-trees-in-r. – Shane

+0

После удаления всех объектов с помощью «rm (list = ls())» используемая память остается неизменной. Что могло вызвать это явление? – pengchy

 Смежные вопросы

  • Нет связанных вопросов^_^