You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by ju...@apache.org on 2026/08/24 09:17:31 UTC
(johnzon) branch master updated: optimized caching
This is an automated email from the ASF dual-hosted git repository.
jungm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/johnzon.git
The following commit(s) were added to refs/heads/master by this push:
new bbf13566 optimized caching
bbf13566 is described below
commit bbf13566bbb664abe85e36aa9dabea0bb07f7cce
Author: Markus Jung <ju...@apache.org>
AuthorDate: Mon Aug 24 11:17:02 2026 +0200
optimized caching
---
.../PerHierarchyAndLexicographicalOrderFieldComparator.java | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/order/PerHierarchyAndLexicographicalOrderFieldComparator.java b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/order/PerHierarchyAndLexicographicalOrderFieldComparator.java
index 48948f63..9c4b2327 100644
--- a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/order/PerHierarchyAndLexicographicalOrderFieldComparator.java
+++ b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/order/PerHierarchyAndLexicographicalOrderFieldComparator.java
@@ -45,7 +45,12 @@ public class PerHierarchyAndLexicographicalOrderFieldComparator implements Compa
}
private int distance(final String o1) {
- return distances.computeIfAbsent(o1, this::slowDistance);
+ return distances.getOrDefault(o1, slowDistance(o1));
+ }
+
+ private int cache(final String o1, final int distance) {
+ distances.putIfAbsent(o1, distance);
+ return distance;
}
private int slowDistance(String o1) {
@@ -54,20 +59,20 @@ public class PerHierarchyAndLexicographicalOrderFieldComparator implements Compa
while (current != null && current != Object.class) {
try {
current.getDeclaredField(o1);
- return i;
+ return cache(o1, i);
} catch (final NoSuchFieldException e) {
// no-op
}
final String methodSuffix = Character.toUpperCase(o1.charAt(0)) + (o1.length() > 1 ? o1.substring(1) : "");
try {
current.getDeclaredMethod("get" + methodSuffix);
- return i;
+ return cache(o1, i);
} catch (final Exception e) {
// no-op
}
try {
current.getDeclaredMethod("is" + methodSuffix);
- return i;
+ return cache(o1, i);
} catch (final Exception e) {
// no-op
}
Fwd: (johnzon) branch master updated: optimized caching
Posted by Romain Manni-Bucau <rm...@gmail.com>.
- return distances.computeIfAbsent(o1, this::slowDistance);
+ return distances.getOrDefault(o1, slowDistance(o1));
doesn't it defeat the goal of having a cache?
Romain Manni-Bucau
@rmannibucau <https://x.com/rmannibucau> | .NET Blog
<https://dotnetbirdie.github.io/> | Blog <https://rmannibucau.github.io/> | Old
Blog <http://rmannibucau.wordpress.com> | Github
<https://github.com/rmannibucau> | LinkedIn
<https://www.linkedin.com/in/rmannibucau> | Book
<https://www.packtpub.com/en-us/product/java-ee-8-high-performance-9781788473064>
Javaccino <https://javaccino.dev/> founder (Java/.NET service - contact via
linkedin)
---------- Forwarded message ---------
De : <ju...@apache.org>
Date: lun. 24 août 2026 à 11:17
Subject: (johnzon) branch master updated: optimized caching
To: commits@johnzon.apache.org <co...@johnzon.apache.org>
This is an automated email from the ASF dual-hosted git repository.
jungm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/johnzon.git
The following commit(s) were added to refs/heads/master by this push:
new bbf13566 optimized caching
bbf13566 is described below
commit bbf13566bbb664abe85e36aa9dabea0bb07f7cce
Author: Markus Jung <ju...@apache.org>
AuthorDate: Mon Aug 24 11:17:02 2026 +0200
optimized caching
---
.../PerHierarchyAndLexicographicalOrderFieldComparator.java | 13
+++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git
a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/order/PerHierarchyAndLexicographicalOrderFieldComparator.java
b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/order/PerHierarchyAndLexicographicalOrderFieldComparator.java
index 48948f63..9c4b2327 100644
---
a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/order/PerHierarchyAndLexicographicalOrderFieldComparator.java
+++
b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/order/PerHierarchyAndLexicographicalOrderFieldComparator.java
@@ -45,7 +45,12 @@ public class
PerHierarchyAndLexicographicalOrderFieldComparator implements Compa
}
private int distance(final String o1) {
- return distances.computeIfAbsent(o1, this::slowDistance);
+ return distances.getOrDefault(o1, slowDistance(o1));
+ }
+
+ private int cache(final String o1, final int distance) {
+ distances.putIfAbsent(o1, distance);
+ return distance;
}
private int slowDistance(String o1) {
@@ -54,20 +59,20 @@ public class
PerHierarchyAndLexicographicalOrderFieldComparator implements Compa
while (current != null && current != Object.class) {
try {
current.getDeclaredField(o1);
- return i;
+ return cache(o1, i);
} catch (final NoSuchFieldException e) {
// no-op
}
final String methodSuffix =
Character.toUpperCase(o1.charAt(0)) + (o1.length() > 1 ? o1.substring(1) :
"");
try {
current.getDeclaredMethod("get" + methodSuffix);
- return i;
+ return cache(o1, i);
} catch (final Exception e) {
// no-op
}
try {
current.getDeclaredMethod("is" + methodSuffix);
- return i;
+ return cache(o1, i);
} catch (final Exception e) {
// no-op
}