diff --git a/exec/SlyEdit.js b/exec/SlyEdit.js
index f06a6cf4587fb29bc61f753a96f5a073e70cf0fb..1885c9e430d7072db1bb39abf111c8edaf6f5013 100644
--- a/exec/SlyEdit.js
+++ b/exec/SlyEdit.js
@@ -28,6 +28,12 @@
  *                              to specify whether the message number is an
  *                              offset.  Released as version 1.26 after some
  *                              testing.
+ * 2013-05-18 Eric Oulashin     Speed optimization (hopefully)
+ *                              compileDateAtLeast2013_05_12() in SlyEdit_Misc.js:
+ *                              Made the return value a function property so
+ *                              that it only has to be figured out once, and
+ *                              eliminates the need for a global variable to
+ *                              store it for speed optimization purposes.
  */
 
 /* Command-line arguments:
@@ -101,7 +107,7 @@ if (!console.term_supports(USER_ANSI))
 
 // Constants
 const EDITOR_VERSION = "1.26";
-const EDITOR_VER_DATE = "2013-05-17";
+const EDITOR_VER_DATE = "2013-05-18";
 
 
 // Program variables
diff --git a/exec/SlyEdit_Misc.js b/exec/SlyEdit_Misc.js
index f6456088542e8f6b3ebf33e229d7fa7a62afb80f..0810c0dd6cea6cf592cf9f8a3740058a9988218e 100644
--- a/exec/SlyEdit_Misc.js
+++ b/exec/SlyEdit_Misc.js
@@ -92,6 +92,12 @@
  *                              change to make bbs.msg_number work when a script
  *                              is running first went into the Synchronet daily
  *                              builds.
+ * 2013-05-18 Eric Oulashin     Speed optimization (hopefully) for
+ *                              compileDateAtLeast2013_05_12(): Made the return
+ *                              value a function property so that it only has
+ *                              to be figured out once, and eliminates the
+ *                              need for a global variable to store it for
+ *                              speed optimization purposes.
  */
 
 // Note: These variables are declared with "var" instead of "const" to avoid
@@ -186,11 +192,6 @@ var CTRL_Y = "\x19";
 var CTRL_Z = "\x1a";
 var KEY_ESC = "\x1b";
 
-// Store whether the Synchronet compile date is at least May 12, 2013
-// (we'll need to know this multiple times, and I don't want to run the
-// function more than once).
-var gCompileDateAtLeast2013_05_12 = compileDateAtLeast2013_05_12();
-
 ///////////////////////////////////////////////////////////////////////////////////
 // Object/class stuff
 
@@ -1981,7 +1982,7 @@ function getCurMsgInfo(pMsgAreaName)
     // is always accurate, but bbs.msg_number only works properly in the
     // Synchronet 3.16 daily builds starting on May 12, 2013, which was right
     // after Digital Man committed his fix to make bbs.msg_number work properly.
-    if ((system.version_num >= 3.16) && gCompileDateAtLeast2013_05_12)
+    if ((system.version_num >= 3.16) && compileDateAtLeast2013_05_12())
       retObj.curMsgNum = bbs.msg_number; // New (2013-05-14)
     else
       retObj.curMsgNum = bbs.smb_curmsg; // For older Synchronet builds
@@ -2157,8 +2158,8 @@ function getFromNameForCurMsg(pMsgInfo)
       // correct message header in all cases, that's the preferred method, but
       // we can only use that for Synchronet 3.16 and above from at least May
       // 12, 2013.
-      //var msgNumAsOffset = !((system.version_num >= 3.16) && gCompileDateAtLeast2013_05_12);
-      var msgNumAsOffset = ((system.version_num < 3.16) || !gCompileDateAtLeast2013_05_12);
+      //var msgNumAsOffset = !((system.version_num >= 3.16) && compileDateAtLeast2013_05_12());
+      var msgNumAsOffset = ((system.version_num < 3.16) || !compileDateAtLeast2013_05_12());
       var hdr = msgBase.get_msg_header(msgNumAsOffset, msgInfo.curMsgNum, true);
       if (hdr != null)
         fromName = hdr.from;
@@ -2360,58 +2361,63 @@ function compileDateAtLeast2013_05_12()
   // system.compiled_when is in the following format:
   // May 12 2013 05:02
 
-  var compileDateParts = system.compiled_when.split(" ");
-  if (compileDateParts.length < 4)
-    return false;
-
-  // Convert the month to a 1-based number
-  var compileMonth = 0;
-  if (/^Jan/.test(compileDateParts[0]))
-    compileMonth = 1;
-  else if (/^Feb/.test(compileDateParts[0]))
-    compileMonth = 2;
-  else if (/^Mar/.test(compileDateParts[0]))
-    compileMonth = 3;
-  else if (/^Apr/.test(compileDateParts[0]))
-    compileMonth = 4;
-  else if (/^May/.test(compileDateParts[0]))
-    compileMonth = 5;
-  else if (/^Jun/.test(compileDateParts[0]))
-    compileMonth = 6;
-  else if (/^Jul/.test(compileDateParts[0]))
-    compileMonth = 7;
-  else if (/^Aug/.test(compileDateParts[0]))
-    compileMonth = 8;
-  else if (/^Sep/.test(compileDateParts[0]))
-    compileMonth = 9;
-  else if (/^Oct/.test(compileDateParts[0]))
-    compileMonth = 10;
-  else if (/^Nov/.test(compileDateParts[0]))
-    compileMonth = 11;
-  else if (/^Dec/.test(compileDateParts[0]))
-    compileMonth = 12;
-
-  // Get the compileDay and compileYear as numeric variables
-  var compileDay = +compileDateParts[1];
-  var compileYear = +compileDateParts[2];
-
-  // Determine if the compile date is at least 2013-05-12
-  var compileDateIsAtLeastMin = true;
-  if (compileYear > 2013)
-    compileDateIsAtLeastMin = true;
-  else if (compileYear < 2013)
-    compileDateIsAtLeastMin = false;
-  else // compileYear is 2013
+  // Determine this only once..  Create a property to store
+  // the true/false value if it hasn't been created yet, then
+  // return it.
+  if (typeof(compileDateAtLeast2013_05_12.dateMin) == "undefined")
   {
-    if (compileMonth > 5)
-      compileDateIsAtLeastMin = true
-    else if (compileMonth < 5)
-      compileDateIsAtLeastMin = false;
-    else // compileMonth is 5
-      compileDateIsAtLeastMin = (compileDay >= 12);
-  }
+    var compileDateParts = system.compiled_when.split(" ");
+    if (compileDateParts.length < 4)
+      return false;
 
-  return compileDateIsAtLeastMin;
+    // Convert the month to a 1-based number
+    var compileMonth = 0;
+    if (/^Jan/.test(compileDateParts[0]))
+      compileMonth = 1;
+    else if (/^Feb/.test(compileDateParts[0]))
+      compileMonth = 2;
+    else if (/^Mar/.test(compileDateParts[0]))
+      compileMonth = 3;
+    else if (/^Apr/.test(compileDateParts[0]))
+      compileMonth = 4;
+    else if (/^May/.test(compileDateParts[0]))
+      compileMonth = 5;
+    else if (/^Jun/.test(compileDateParts[0]))
+      compileMonth = 6;
+    else if (/^Jul/.test(compileDateParts[0]))
+      compileMonth = 7;
+    else if (/^Aug/.test(compileDateParts[0]))
+      compileMonth = 8;
+    else if (/^Sep/.test(compileDateParts[0]))
+      compileMonth = 9;
+    else if (/^Oct/.test(compileDateParts[0]))
+      compileMonth = 10;
+    else if (/^Nov/.test(compileDateParts[0]))
+      compileMonth = 11;
+    else if (/^Dec/.test(compileDateParts[0]))
+      compileMonth = 12;
+
+    // Get the compileDay and compileYear as numeric variables
+    var compileDay = +compileDateParts[1];
+    var compileYear = +compileDateParts[2];
+
+    // Determine if the compile date is at least 2013-05-12
+    compileDateAtLeast2013_05_12.dateMin = true;
+    if (compileYear > 2013)
+      compileDateAtLeast2013_05_12.dateMin = true;
+    else if (compileYear < 2013)
+      compileDateAtLeast2013_05_12.dateMin = false;
+    else // compileYear is 2013
+    {
+      if (compileMonth > 5)
+        compileDateAtLeast2013_05_12.dateMin = true
+      else if (compileMonth < 5)
+        compileDateAtLeast2013_05_12.dateMin = false;
+      else // compileMonth is 5
+        compileDateAtLeast2013_05_12.dateMin = (compileDay >= 12);
+    }
+  }
+  return compileDateAtLeast2013_05_12.dateMin;
 }
 
 // This function displays debug text at a given location on the screen, then