commit | 5cb988334179b4f04a27c59c1e6a888db0dbfc9c | [log] [tgz] |
---|---|---|
author | Stephane Landelle <slandelle@gatling.io> | Thu Oct 12 10:41:53 2017 +0200 |
committer | pascalschumacher <pascalschumacher@gmx.net> | Thu Oct 12 19:31:25 2017 +0200 |
tree | 42b249367cfe99f47e094ade4700892b6357e988 | |
parent | 274dbfe81f5f43a47639623c62fc998b5eccd5f0 [diff] |
LANG-1358: Improve StringUtils#replace throughput (closes #300) Motivation: `StringUtils#replace` uses `substring` to append a String region into a StringBuilder. This causes useless copies, as `StringBuilder#append` can take start and end indexes. Modification: Use proper `StringBuilder#append` [overload](https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html#append-java.lang.CharSequence-int-int-). Result: Based on benchmark from [JOOQ’s post](https://blog.jooq.org/2017/10/11/benchmarking-jdk-string-replace-vs-apache-commons-stringutils-replace): Benchmark Mode Cnt Score Error Units StringReplaceBenchmark.testFastStringReplaceLongStringOneMatch thrpt 21 7546534,219 ± 145523,962 ops/s StringReplaceBenchmark.testStringUtilsReplaceLongStringOneMatch thrpt 21 7353512,552 ± 124498,228 ops/s StringReplaceBenchmark.testFastStringReplaceLongStringSeveralMatches thrpt 21 5077255,810 ± 62358,937 ops/s StringReplaceBenchmark.testStringUtilsReplaceLongStringSeveralMatches thrpt 21 4108357,612 ± 92909,038 ops/s StringReplaceBenchmark.testFastStringReplaceShortStringOneMatch thrpt 21 15911221,949 ± 541064,693 ops/s StringReplaceBenchmark.testStringUtilsReplaceShortStringOneMatch thrpt 21 10677897,475 ± 491091,973 ops/s StringReplaceBenchmark.testFastStringReplaceShortStringSeveralMatches thrpt 21 9271742,251 ± 220150,121 ops/s StringReplaceBenchmark.testStringUtilsReplaceShortStringSeveralMatches thrpt 21 6158829,188 ± 99637,607 ops/s
Apache Commons Lang, a package of Java utility classes for the classes that are in java.lang's hierarchy, or are considered to be so standard as to justify existence in java.lang.
More information can be found on the homepage. The JavaDoc can be browsed. Questions related to the usage of Apache Commons Lang should be posted to the user mailing list.
You can download source and binaries from our download page.
Alternatively you can pull it from the central Maven repositories:
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.6</version> </dependency>
We accept PRs via github. The developer mailing list is the main channel of communication for contributors. There are some guidelines which will make applying PRs easier for us:
mvn clean test
.If you plan to contribute on a regular basis, please consider filing a contributor license agreement. You can learn more about contributing via GitHub in our contribution guidelines.
Code is under the Apache Licence v2.
You like Apache Commons Lang? Then donate back to the ASF to support the development.