Exemple #1
0
 private static void doTestObjectFinalization(RuntimeDiagnostics r, int sizeEach, int n, bool disposeSexp = false)
 {
     NumericVector[] v = r.CreateNumericVectors(n, sizeEach);
     checkSizes(v, sizeEach);
     var v2 = r.Lapply(v, "function(x) {x * x}");
     checkSizes(v2, sizeEach);
     v = null;
     for (int i = 0; i < 5; i++)
     {
         GC.Collect();
         v = r.CreateNumericVectors(n, sizeEach);
         checkSizes(v, sizeEach);
         if (disposeSexp)
             for (int j = 0; j < v.Length; j++)
             {
                 v[j].Dispose();
             }
     }
 }
Exemple #2
0
        private static void Main(string[] args)
        {
            REngine.SetEnvironmentVariables();
            using (var engine = REngine.GetInstance(device: device))
            {
                engine.EnableLock = true;
                var r = new RuntimeDiagnostics(engine);
                int sizeEach = 20;
                int n = 1000;
                NumericVector[] nVecs = r.CreateNumericVectors(n, sizeEach);
                nVecs = r.Lapply(nVecs, "function(x) {x * 2}");

                doMultiThreadingOperation(r, sizeEach, n, 50, false);
                doTestObjectFinalization(r, sizeEach, n);
                doTestObjectFinalization(r, sizeEach, n, disposeSexp: true);
                nVecs = null;
                engine.Dispose(); // deliberate test
            }
        }