:locals vs. instance variable in partials ... best practice?

I've been vacillating between using the :locals hash and instance
variables when passing data to partials. Is there a valid reason to use
one over the other? What could be considered a best practice in the
Rails community? I did some googling but didn't turn anything up.


As a general rule of thumb, you'll want to be conservative when it
comes to scoping your variables. In my opinion, it's best to use
locals and not rely on an instance variable.



In a similar vein...

I've always wondered if there's a performance (or other) difference
between using an iterating partial (e.g. with :collection =>) vs. an
explicit iterator.

For example:
<%= render :partial => 'item', :collection => @items %>

<% @items.each do |i| %>
<%= h i.name %>
<% end %>

(I suppose there's also the case of writing an explicit iteration but
using a partial inside the iteration)

I assume (but haven't tested) that the latter case is more performant;
but using the iterating partial feels more 'rails-ish' to me...