Index: wp-includes/capabilities.php
===================================================================
--- wp-includes/capabilities.php	(revision 21260)
+++ wp-includes/capabilities.php	(working copy)
@@ -933,9 +933,14 @@
  *
  * @param string $cap Capability name.
  * @param int $user_id User ID.
+ * @param bool $cache Cache the results
  * @return array Actual capabilities for meta capability.
  */
-function map_meta_cap( $cap, $user_id ) {
+function map_meta_cap( $cap, $user_id, $cache = true ) {
+	static $_cache = array();
+	if ( $cache && isset( $_cache[ $cap.$user_id ] ) )
+		return $_cache[ $cap.$user_id ];
+
 	$args = array_slice( func_get_args(), 2 );
 	$caps = array();
 
@@ -1194,14 +1199,16 @@
 		$post_type_meta_caps = _post_type_meta_capabilities();
 		if ( isset( $post_type_meta_caps[ $cap ] ) ) {
 			$args = array_merge( array( $post_type_meta_caps[ $cap ], $user_id ), $args );
-			return call_user_func_array( 'map_meta_cap', $args );
+			$_cache[ $cap.$user_id ] = call_user_func_array( 'map_meta_cap', $args );
+			return $_cache[ $cap.$user_id ];
 		}
 
 		// If no meta caps match, return the original cap.
 		$caps[] = $cap;
 	}
 
-	return apply_filters('map_meta_cap', $caps, $cap, $user_id, $args);
+	$_cache[ $cap.$user_id ] = apply_filters('map_meta_cap', $caps, $cap, $user_id, $args);
+	return $_cache[ $cap.$user_id ];
 }
 
 /**
