diff --git a/modules/field/field.crud.inc b/modules/field/field.crud.inc
index 83863d6..541b5d5 100644
--- a/modules/field/field.crud.inc
+++ b/modules/field/field.crud.inc
@@ -463,6 +463,10 @@ function field_delete_field($field_name) {
  *     View modes not present in the definition are left empty, and the field
  *     will not be displayed in this mode.
  *
+ * @param $reset
+ *   An optional boolean to control whether or not the field cache should
+ *   be refreshed. Defaults to TRUE.
+ *
  * @return
  *   The $instance array with the id property filled in.
  *
@@ -470,7 +474,7 @@ function field_delete_field($field_name) {
  *
  * See: @link field Field API data structures @endlink.
  */
-function field_create_instance($instance) {
+function field_create_instance($instance, $reset = TRUE) {
   $field = field_read_field($instance['field_name']);
   if (empty($field)) {
     throw new FieldException(t("Attempt to create an instance of a field @field_name that doesn't exist or is currently inactive.", array('@field_name' => $instance['field_name'])));
@@ -570,7 +574,9 @@ function field_update_instance($instance) {
   _field_write_instance($instance, TRUE);
 
   // Clear caches.
-  field_cache_clear();
+  if ($reset) {
+    field_cache_clear();
+  }
 
   module_invoke_all('field_update_instance', $instance, $prior_instance);
 }
diff --git a/modules/field_ui/field_ui.admin.inc b/modules/field_ui/field_ui.admin.inc
index 5c6f529..84cc6a8 100644
--- a/modules/field_ui/field_ui.admin.inc
+++ b/modules/field_ui/field_ui.admin.inc
@@ -784,7 +784,9 @@ function field_ui_field_overview_form_submit($form, &$form_state) {
     if (in_array($key, $form['#fields'])) {
       $instance = field_read_instance($entity_type, $key, $bundle);
       $instance['widget']['weight'] = $values['weight'];
-      field_update_instance($instance);
+      // Field cache will be cleared when the field instance is created, and
+      // field cache should not be cleared N+1 times.
+      field_update_instance($instance, FALSE);
     }
     elseif (in_array($key, $form['#extra'])) {
       $bundle_settings['extra_fields']['form'][$key]['weight'] = $values['weight'];
@@ -1419,9 +1421,11 @@ function _field_ui_add_default_view_mode_settings($entity_type, $bundle, $view_m
       // The instance doesn't specify anything for this view mode, so use the
       // default display settings.
       $instance['display'][$view_mode] = $instance['display']['default'];
-      field_update_instance($instance);
+      field_update_instance($instance, FALSE);
     }
   }
+  // Clear field and entity info cache.
+  field_cache_clear();
 
   // Update display settings for 'extra fields'.
   foreach (array_keys($settings['extra_fields']['display']) as $name) {
