diff --git a/includes/base.inc b/includes/base.inc
index 804ccc2..ba02614 100644
--- a/includes/base.inc
+++ b/includes/base.inc
@@ -15,6 +15,16 @@ class views_object {
   var $options = array();
 
   /**
+   * A cached version of the option_definition.
+   *
+   * @var array
+   *
+   * @see views_object::_option_definition()
+   * @see views_object::set_default_options()
+   */
+  var $_option_definition;
+
+  /**
    * The top object of a view.
    *
    * @var view
@@ -60,12 +70,24 @@ class views_object {
   function options(&$options) { }
 
   /**
+   * We cache option_definition
+   *
+   * @return array
+   */
+  function _option_definition() {
+    if (!isset($this->_option_definition)) {
+      $this->_option_definition = $this->option_definition();
+    }
+    return $this->_option_definition;
+  }
+
+  /**
    * Set default options.
    * For backward compatibility, it sends the options array; this is a
    * feature that will likely disappear at some point.
    */
   function set_default_options() {
-    $this->_set_option_defaults($this->options, $this->option_definition());
+    $this->_set_option_defaults($this->options, $this->_option_definition());
 
     // Retained for complex defaults plus backward compatibility.
     $this->options($this->options);
@@ -96,7 +118,7 @@ class views_object {
     }
 
     if (!isset($definition)) {
-      $definition = $this->option_definition();
+      $definition = $this->_option_definition();
     }
 
     if (!empty($this->view)) {
@@ -193,7 +215,7 @@ class views_object {
 
   function export_options($indent, $prefix) {
     $output = '';
-    foreach ($this->option_definition() as $option => $definition) {
+    foreach ($this->_option_definition() as $option => $definition) {
       $output .= $this->export_option($indent, $prefix, $this->options, $option, $definition, array());
     }
 
@@ -254,7 +276,7 @@ class views_object {
    * Unpacks each handler to store translatable texts.
    */
   function unpack_translatables(&$translatable, $parents = array()) {
-    foreach ($this->option_definition() as $option => $definition) {
+    foreach ($this->_option_definition() as $option => $definition) {
       $this->unpack_translatable($translatable, $this->options, $option, $definition, $parents, array());
     }
   }
