This is an automated email from the ASF dual-hosted git repository.
panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new b092bbf Reduce overhead of Mod/HashMod sharding algorithm (#15292)
b092bbf is described below
commit b092bbf67d7872060e5bb146e128a1b3a31387ef
Author: 吴伟杰 <[email protected]>
AuthorDate: Tue Feb 8 19:22:05 2022 +0800
Reduce overhead of Mod/HashMod sharding algorithm (#15292)
* Return longValue of Number directly
* Avoid calculate suffix in loop
* Avoid calculate suffix in loop in HashModShardingAlgorithm
---
.../sharding/algorithm/sharding/mod/HashModShardingAlgorithm.java | 3 ++-
.../sharding/algorithm/sharding/mod/ModShardingAlgorithm.java | 5 +++--
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/mod/HashModShardingAlgorithm.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/mod/HashModShardingAlgorithm.java
index 6162928..372ac28 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/mod/HashModShardingAlgorithm.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/mod/HashModShardingAlgorithm.java
@@ -54,8 +54,9 @@ public final class HashModShardingAlgorithm implements
StandardShardingAlgorithm
@Override
public String doSharding(final Collection<String> availableTargetNames,
final PreciseShardingValue<Comparable<?>> shardingValue) {
+ String suffix =
String.valueOf(hashShardingValue(shardingValue.getValue()) % shardingCount);
for (String each : availableTargetNames) {
- if
(each.endsWith(String.valueOf(hashShardingValue(shardingValue.getValue()) %
shardingCount))) {
+ if (each.endsWith(suffix)) {
return each;
}
}
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/mod/ModShardingAlgorithm.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/mod/ModShardingAlgorithm.java
index c181c9a..2d78d39 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/mod/ModShardingAlgorithm.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/mod/ModShardingAlgorithm.java
@@ -55,8 +55,9 @@ public final class ModShardingAlgorithm implements
StandardShardingAlgorithm<Com
@Override
public String doSharding(final Collection<String> availableTargetNames,
final PreciseShardingValue<Comparable<?>> shardingValue) {
+ String suffix = String.valueOf(getLongValue(shardingValue.getValue())
% shardingCount);
for (String each : availableTargetNames) {
- if
(each.endsWith(String.valueOf(getLongValue(shardingValue.getValue()) %
shardingCount))) {
+ if (each.endsWith(suffix)) {
return each;
}
}
@@ -86,7 +87,7 @@ public final class ModShardingAlgorithm implements
StandardShardingAlgorithm<Com
}
private long getLongValue(final Comparable<?> value) {
- return Long.parseLong(value.toString());
+ return value instanceof Number ? ((Number) value).longValue() :
Long.parseLong(value.toString());
}
@Override