Index: src/wp-includes/functions.php
===================================================================
--- src/wp-includes/functions.php	(revision 35863)
+++ src/wp-includes/functions.php	(working copy)
@@ -1800,11 +1800,31 @@
  * 'error' - set to false.
  *
  * @since 2.0.0
+ * @uses _wp_upload_dir()
  *
  * @param string $time Optional. Time formatted in 'yyyy/mm'. Default null.
  * @return array See above for description.
  */
 function wp_upload_dir( $time = null ) {
+	static $cache = array();
+	$key = sprintf( '%d-%s', get_current_blog_id(), (string) $time );
+
+	if ( empty( $cache[ $key ] ) ) {
+		$cache[ $key ] = _wp_upload_dir( $time );
+	}
+
+	return $cache[ $key ];
+}
+
+/**
+ * A non-cached version of wp_upload_dir().
+ *
+ * @access private
+ *
+ * @param string $time Optional. Time formatted in 'yyyy/mm'. Default null.
+ * @return array See wp_upload_dir()
+ */
+function _wp_upload_dir( $time = null ) {
 	$siteurl = get_option( 'siteurl' );
 	$upload_path = trim( get_option( 'upload_path' ) );
 
