From d2d4e93a139df9eec2036bbd7af1018a3a6eb0b4 Mon Sep 17 00:00:00 2001 From: cao-awa Date: Wed, 28 Aug 2024 02:38:40 +0800 Subject: [PATCH] Use loop to replace alternate call. --- gradle.properties | 2 +- .../cao/awa/catheter/BooleanCatheter.java | 24 ++++++++++++------- .../github/cao/awa/catheter/ByteCatheter.java | 24 ++++++++++++------- .../com/github/cao/awa/catheter/Catheter.java | 24 ++++++++++++------- .../cao/awa/catheter/DoubleCatheter.java | 24 ++++++++++++------- .../github/cao/awa/catheter/IntCatheter.java | 24 ++++++++++++------- .../github/cao/awa/catheter/LongCatheter.java | 24 ++++++++++++------- 7 files changed, 97 insertions(+), 49 deletions(-) diff --git a/gradle.properties b/gradle.properties index 0ef32b3..f8633aa 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ kotlin.code.style=official -version_name=1.0.21 +version_name=1.0.22 artifact_id=catheter group_id=com.github.cao.awa \ No newline at end of file diff --git a/src/main/java/com/github/cao/awa/catheter/BooleanCatheter.java b/src/main/java/com/github/cao/awa/catheter/BooleanCatheter.java index 62adea9..e96a440 100644 --- a/src/main/java/com/github/cao/awa/catheter/BooleanCatheter.java +++ b/src/main/java/com/github/cao/awa/catheter/BooleanCatheter.java @@ -982,10 +982,14 @@ public BooleanCatheter flat(Function function) { this.targets = array(totalSize.get()); catheter.alternate(0, (currentIndex, inner) -> { - return inner.alternate(currentIndex, (index, element) -> { - fetch(index, element); - return index + 1; - }); + int i = currentIndex; + int innerSize = inner.count(); + while (innerSize > 0){ + this.targets[i] = inner.fetch(i); + i++; + innerSize--; + } + return currentIndex; }); return this; } @@ -1003,10 +1007,14 @@ public Catheter flatTo(Function> function) { Catheter result = Catheter.makeCapacity(totalSize.get()); catheter.alternate(0, (currentIndex, inner) -> { - return inner.alternate(currentIndex, (index, element) -> { - result.fetch(index, element); - return index + 1; - }); + int i = currentIndex; + int innerSize = inner.count(); + while (innerSize > 0){ + result.fetch(i, inner.fetch(i)); + i++; + innerSize--; + } + return currentIndex; }); return result; } diff --git a/src/main/java/com/github/cao/awa/catheter/ByteCatheter.java b/src/main/java/com/github/cao/awa/catheter/ByteCatheter.java index ac1d6ce..8cc505d 100644 --- a/src/main/java/com/github/cao/awa/catheter/ByteCatheter.java +++ b/src/main/java/com/github/cao/awa/catheter/ByteCatheter.java @@ -985,10 +985,14 @@ public ByteCatheter flat(Function function) { this.targets = array(totalSize.get()); catheter.alternate(0, (currentIndex, inner) -> { - return inner.alternate(currentIndex, (index, element) -> { - fetch(index, element); - return index + 1; - }); + int i = currentIndex; + int innerSize = inner.count(); + while (innerSize > 0){ + this.targets[i] = inner.fetch(i); + i++; + innerSize--; + } + return currentIndex; }); return this; } @@ -1006,10 +1010,14 @@ public Catheter flatTo(Function> function) { Catheter result = Catheter.makeCapacity(totalSize.get()); catheter.alternate(0, (currentIndex, inner) -> { - return inner.alternate(currentIndex, (index, element) -> { - result.fetch(index, element); - return index + 1; - }); + int i = currentIndex; + int innerSize = inner.count(); + while (innerSize > 0){ + result.fetch(i, inner.fetch(i)); + i++; + innerSize--; + } + return currentIndex; }); return result; } diff --git a/src/main/java/com/github/cao/awa/catheter/Catheter.java b/src/main/java/com/github/cao/awa/catheter/Catheter.java index 68fd129..061c4e2 100644 --- a/src/main/java/com/github/cao/awa/catheter/Catheter.java +++ b/src/main/java/com/github/cao/awa/catheter/Catheter.java @@ -54,10 +54,14 @@ public Catheter flat(Function> function) { this.targets = array(totalSize.get()); catheter.alternate(0, (currentIndex, inner) -> { - return inner.alternate(currentIndex, (index, element) -> { - fetch(index, element); - return index + 1; - }); + int i = currentIndex; + int innerSize = inner.count(); + while (innerSize > 0){ + this.targets[i] = inner.fetch(i); + i++; + innerSize--; + } + return currentIndex; }); return this; } @@ -75,10 +79,14 @@ public Catheter flatTo(Function> function) { Catheter result = Catheter.makeCapacity(totalSize.get()); catheter.alternate(0, (currentIndex, inner) -> { - return inner.alternate(currentIndex, (index, element) -> { - result.fetch(index, element); - return index + 1; - }); + int i = currentIndex; + int innerSize = inner.count(); + while (innerSize > 0){ + result.fetch(i, inner.fetch(i)); + i++; + innerSize--; + } + return currentIndex; }); return result; } diff --git a/src/main/java/com/github/cao/awa/catheter/DoubleCatheter.java b/src/main/java/com/github/cao/awa/catheter/DoubleCatheter.java index 8455f88..31c7868 100644 --- a/src/main/java/com/github/cao/awa/catheter/DoubleCatheter.java +++ b/src/main/java/com/github/cao/awa/catheter/DoubleCatheter.java @@ -1006,10 +1006,14 @@ public DoubleCatheter flat(Function function) { this.targets = array(totalSize.get()); catheter.alternate(0, (currentIndex, inner) -> { - return inner.alternate(currentIndex, (index, element) -> { - fetch(index, element); - return index + 1; - }); + int i = currentIndex; + int innerSize = inner.count(); + while (innerSize > 0){ + this.targets[i] = inner.fetch(i); + i++; + innerSize--; + } + return currentIndex; }); return this; } @@ -1027,10 +1031,14 @@ public Catheter flatTo(Function> function) { Catheter result = Catheter.makeCapacity(totalSize.get()); catheter.alternate(0, (currentIndex, inner) -> { - return inner.alternate(currentIndex, (index, element) -> { - result.fetch(index, element); - return index + 1; - }); + int i = currentIndex; + int innerSize = inner.count(); + while (innerSize > 0){ + result.fetch(i, inner.fetch(i)); + i++; + innerSize--; + } + return currentIndex; }); return result; } diff --git a/src/main/java/com/github/cao/awa/catheter/IntCatheter.java b/src/main/java/com/github/cao/awa/catheter/IntCatheter.java index f6506ba..39ae5da 100644 --- a/src/main/java/com/github/cao/awa/catheter/IntCatheter.java +++ b/src/main/java/com/github/cao/awa/catheter/IntCatheter.java @@ -1006,10 +1006,14 @@ public IntCatheter flat(Function function) { this.targets = array(totalSize.get()); catheter.alternate(0, (currentIndex, inner) -> { - return inner.alternate(currentIndex, (index, element) -> { - fetch(index, element); - return index + 1; - }); + int i = currentIndex; + int innerSize = inner.count(); + while (innerSize > 0){ + this.targets[i] = inner.fetch(i); + i++; + innerSize--; + } + return currentIndex; }); return this; } @@ -1027,10 +1031,14 @@ public Catheter flatTo(Function> function) { Catheter result = Catheter.makeCapacity(totalSize.get()); catheter.alternate(0, (currentIndex, inner) -> { - return inner.alternate(currentIndex, (index, element) -> { - result.fetch(index, element); - return index + 1; - }); + int i = currentIndex; + int innerSize = inner.count(); + while (innerSize > 0){ + result.fetch(i, inner.fetch(i)); + i++; + innerSize--; + } + return currentIndex; }); return result; } diff --git a/src/main/java/com/github/cao/awa/catheter/LongCatheter.java b/src/main/java/com/github/cao/awa/catheter/LongCatheter.java index 8aba1a6..451ad33 100644 --- a/src/main/java/com/github/cao/awa/catheter/LongCatheter.java +++ b/src/main/java/com/github/cao/awa/catheter/LongCatheter.java @@ -1006,10 +1006,14 @@ public LongCatheter flat(Function function) { this.targets = array(totalSize.get()); catheter.alternate(0, (currentIndex, inner) -> { - return inner.alternate(currentIndex, (index, element) -> { - fetch(index, element); - return index + 1; - }); + int i = currentIndex; + int innerSize = inner.count(); + while (innerSize > 0){ + this.targets[i] = inner.fetch(i); + i++; + innerSize--; + } + return currentIndex; }); return this; } @@ -1027,10 +1031,14 @@ public Catheter flatTo(Function> function) { Catheter result = Catheter.makeCapacity(totalSize.get()); catheter.alternate(0, (currentIndex, inner) -> { - return inner.alternate(currentIndex, (index, element) -> { - result.fetch(index, element); - return index + 1; - }); + int i = currentIndex; + int innerSize = inner.count(); + while (innerSize > 0){ + result.fetch(i, inner.fetch(i)); + i++; + innerSize--; + } + return currentIndex; }); return result; }