Rendering collections

Whenever a number of objects (collection) have to be rendered, the index action is requested according to the REST approach.
For example the controller for an articles list:

class ArticlesController < ApplicationController
  def index
    @articles = Article.all
  end
end

According to the Rails convention, the appropriate view is rendered, like this HAML file articles/index.html.haml:

%ul.articles
  - @articles.each do |article|
    = render partial: 'article', locals: { article: article }

with the partial articles/_article.html.haml:

%li{ id: dom_id(article) }= article.title

However the repeated partial rendering in a loop implies several disadvantages.
The view contains unnecessary logic (the loop).
Besides the approach is poorly performing. Essentially the partial is reloaded for each loop pass. For 20 articles that means 10 times:

Started GET "/" for 127.0.0.1 at 2016-01-03 21:37:36 +0100
Processing by ArticlesController#index as HTML
Rendered articles/_article.html.haml (2.9ms)
Rendered articles/_article.html.haml (3.1ms)
Rendered articles/_article.html.haml (2.6ms)
Rendered articles/_article.html.haml (2.1ms)
Rendered articles/_article.html.haml (1.9ms)
Rendered articles/_article.html.haml (2.8ms)
Rendered articles/_article.html.haml (2.8ms)
Rendered articles/_article.html.haml (2.5ms)
Rendered articles/_article.html.haml (2.2ms)
Rendered articles/_article.html.haml (1.8ms)
Rendered articles/index.html.haml within layouts/application (47.2ms)
Completed 200 OK in 244ms (Views: 239.6ms | ActiveRecord: 1.4ms)

The alternative is partial caching by collection rendering. The improved view articles/index.html.haml:

%ul.articles
  = render partial: 'article', collection: @articles

The iterator was eliminated and the particular article is assigned to the partial implicitly.
The partial is still called explicitly. If the partial name meets the convention, there is a more concise alternative:

%ul.articles
  = render @articles

In doing so Rails checks the method ‘to_partial_path’ for each object, if it is implemented, which is true for ActiveRecord objects. That is how the correct partial is rendered.
In both cases the view is way more readable and the log file looks like:

Started GET "/" for 127.0.0.1 at 2016-01-03 21:40:21 +0100
Processing by ArticlesController#index as HTML
Rendered articles/_article.html.haml (17.3ms)
Rendered articles/index.html.haml within layouts/application (40.2ms)
Completed 200 OK in 223ms (Views: 220.8ms | ActiveRecord: 0.9ms)

The result is a 7.4 ms performance gain.
From my perspective the cleaned view is as much as important.