Bläddra i källkod

Modify TranslatedFunction.GetPointer () to optimize performance (#995)

* add local var to reduce calling Marshal.GetFunctionPointerForDelegate

* modify code style
Chenj168 6 år sedan
förälder
incheckning
561d64e5bf
1 ändrade filer med 7 tillägg och 1 borttagningar
  1. 7 1
      ARMeilleure/Translation/TranslatedFunction.cs

+ 7 - 1
ARMeilleure/Translation/TranslatedFunction.cs

@@ -9,6 +9,7 @@ namespace ARMeilleure.Translation
         private const int MinCallsForRejit = 100;
         private const int MinCallsForRejit = 100;
 
 
         private GuestFunction _func;
         private GuestFunction _func;
+        private IntPtr _funcPtr;
 
 
         private bool _rejit;
         private bool _rejit;
         private int  _callCount;
         private int  _callCount;
@@ -33,7 +34,12 @@ namespace ARMeilleure.Translation
 
 
         public IntPtr GetPointer()
         public IntPtr GetPointer()
         {
         {
-            return Marshal.GetFunctionPointerForDelegate(_func);
+            if (_funcPtr == IntPtr.Zero)
+            {
+                _funcPtr = Marshal.GetFunctionPointerForDelegate(_func);
+            }
+
+            return _funcPtr;
         }
         }
     }
     }
 }
 }