From 675735d8d99e9de19e3ec7a2e7ec0c7e3e47e0c2 Mon Sep 17 00:00:00 2001
From: Vojtech Moravec <vojtech.moravec.st@vsb.cz>
Date: Mon, 19 Oct 2020 08:50:20 +0200
Subject: [PATCH] Save array difference result to prepared array.

The old API is still present and just allocates the difference array,
which is later passed to the `new` function. This way we can skip
allocating the same array every time we want to calculate plane
difference of multiple planes.
---
 src/main/java/cz/it4i/qcmp/utilities/Utils.java | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/main/java/cz/it4i/qcmp/utilities/Utils.java b/src/main/java/cz/it4i/qcmp/utilities/Utils.java
index 5c00075..3730c98 100644
--- a/src/main/java/cz/it4i/qcmp/utilities/Utils.java
+++ b/src/main/java/cz/it4i/qcmp/utilities/Utils.java
@@ -55,12 +55,17 @@ public class Utils {
 
     public static int[] getDifference(final int[] original, final int[] transformed) {
         assert (original.length == transformed.length) : "Array lengths doesn't match";
-
         final int[] difference = new int[original.length];
+        differenceToArray(original, transformed, difference);
+        return difference;
+    }
+
+    public static void differenceToArray(final int[] original, final int[] transformed, final int[] result) {
+        assert (original.length == transformed.length) : "Array lengths doesn't match";
+        assert (original.length == result.length) : "Array lengths doesn't match with result array.";
         for (int i = 0; i < original.length; i++) {
-            difference[i] = (original[i] - transformed[i]);
+            result[i] = (original[i] - transformed[i]);
         }
-        return difference;
     }
 
     public static int[] asAbsoluteValues(final int[] values) {
-- 
GitLab