From 38bfa6c05c8a4bfd56ff4eebf162062479d8b344 Mon Sep 17 00:00:00 2001 From: Fabian Vu <Fabian.Vu@hhu.de> Date: Thu, 22 May 2025 12:38:46 +0200 Subject: [PATCH] Fix a performance lack in Java BRelation --- .../src/main/java/de/hhu/stups/btypes/BRelation.java | 12 ++++-------- .../src/main/java/de/hhu/stups/btypes/BRelation.java | 12 ++++-------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/btypes_big_integer/src/main/java/de/hhu/stups/btypes/BRelation.java b/btypes_big_integer/src/main/java/de/hhu/stups/btypes/BRelation.java index 1d3816877..a44527396 100644 --- a/btypes_big_integer/src/main/java/de/hhu/stups/btypes/BRelation.java +++ b/btypes_big_integer/src/main/java/de/hhu/stups/btypes/BRelation.java @@ -219,14 +219,12 @@ public class BRelation<S,T> implements BObject, Iterable<BTuple<S,T>> { S prj1 = object.projection1(); T prj2 = object.projection2(); - PersistentHashSet domain = (PersistentHashSet) SET.invoke(KEYS.invoke(this.map)); + PersistentHashSet range = (PersistentHashSet) GET.invoke(this.map, prj1); - if(!domain.contains(prj1)) { + if(range == null) { return new BBoolean(false); } - PersistentHashSet range = (PersistentHashSet) GET.invoke(this.map, prj1); - return new BBoolean(range.contains(prj2)); } @@ -234,14 +232,12 @@ public class BRelation<S,T> implements BObject, Iterable<BTuple<S,T>> { S prj1 = object.projection1(); T prj2 = object.projection2(); - PersistentHashSet domain = (PersistentHashSet) SET.invoke(KEYS.invoke(this.map)); + PersistentHashSet range = (PersistentHashSet) GET.invoke(this.map, prj1); - if(!domain.contains(prj1)) { + if(range == null) { return new BBoolean(true); } - PersistentHashSet range = (PersistentHashSet) GET.invoke(this.map, prj1); - return new BBoolean(!range.contains(prj2)); } diff --git a/btypes_primitives/src/main/java/de/hhu/stups/btypes/BRelation.java b/btypes_primitives/src/main/java/de/hhu/stups/btypes/BRelation.java index 0631fb3e0..533652d3b 100644 --- a/btypes_primitives/src/main/java/de/hhu/stups/btypes/BRelation.java +++ b/btypes_primitives/src/main/java/de/hhu/stups/btypes/BRelation.java @@ -218,14 +218,12 @@ public class BRelation<S,T> implements BObject, Iterable<BTuple<S,T>> { S prj1 = object.projection1(); T prj2 = object.projection2(); - PersistentHashSet domain = (PersistentHashSet) SET.invoke(KEYS.invoke(this.map)); + PersistentHashSet range = (PersistentHashSet) GET.invoke(this.map, prj1); - if(!domain.contains(prj1)) { + if(range == null) { return new BBoolean(false); } - PersistentHashSet range = (PersistentHashSet) GET.invoke(this.map, prj1); - return new BBoolean(range.contains(prj2)); } @@ -233,14 +231,12 @@ public class BRelation<S,T> implements BObject, Iterable<BTuple<S,T>> { S prj1 = object.projection1(); T prj2 = object.projection2(); - PersistentHashSet domain = (PersistentHashSet) SET.invoke(KEYS.invoke(this.map)); + PersistentHashSet range = (PersistentHashSet) GET.invoke(this.map, prj1); - if(!domain.contains(prj1)) { + if(range == null) { return new BBoolean(true); } - PersistentHashSet range = (PersistentHashSet) GET.invoke(this.map, prj1); - return new BBoolean(!range.contains(prj2)); } -- GitLab