Proper way to display latest 5 posts grouped by post type?

<?php $post_types = array(
    'bmw' => 'BMW',  // post type to use in query => post type to show in <h2>
    'audi' => 'Audi'

); 

foreach( $post_types as $post_type => $post_type_name ):
?>

    <h2>Latest <?php echo $post_type_name; ?> Posts:</h2>
    <ul>
    <?php
        $args = array(
        'numberposts' => 5,
        'post_type' => $post_type
    );
        $recent_posts = wp_get_recent_posts( $args );
        foreach( $recent_posts as $recent ){
            echo '<li><a href="' . get_permalink($recent["ID"]) . '">' .   $recent["post_title"].'</a> </li> ';
        }
        wp_reset_query();
    ?>
    </ul>
<?php endforeach; ?>

I think it’s better to use wp_get_recent_posts is better than one single query, because of the filters that may be triggered, because of query cache, because the Db can be scaled into partitions for each post type and because there’s no good single query to get all the info faster.