I've encountered an interesting scenario. For some reason strip() against blank  string (contains whitespaces only) significantly faster than trim() in Java 11.
Benchmark
public class Test {
    public static final String TEST_STRING = "   "; // 3 whitespaces
    @Benchmark
    @Warmup(iterations = 10, time = 200, timeUnit = MILLISECONDS)
    @Measurement(iterations = 20, time = 500, timeUnit = MILLISECONDS)
    @BenchmarkMode(Mode.Throughput)
    public void testTrim() {
        TEST_STRING.trim();
    }
    @Benchmark
    @Warmup(iterations = 10, time = 200, timeUnit = MILLISECONDS)
    @Measurement(iterations = 20, time = 500, timeUnit = MILLISECONDS)
    @BenchmarkMode(Mode.Throughput)
    public void testStrip() {
        TEST_STRING.strip();
    }
    public static void main(String[] args) throws Exception {
        org.openjdk.jmh.Main.main(args);
    }
}
Results
# Run complete. Total time: 00:04:16
Benchmark        Mode  Cnt           Score          Error  Units
Test.testStrip  thrpt  200  2067457963.295 ± 12353310.918  ops/s
Test.testTrim   thrpt  200   402307182.894 ±  4559641.554  ops/s
Apparently strip() outperforms trim() ~5 times.
Although for non-blank string, results are almost identical:
public class Test {
    public static final String TEST_STRING = " Test String ";
    @Benchmark
    @Warmup(iterations = 10, time = 200, timeUnit = MILLISECONDS)
    @Measurement(iterations = 20, time = 500, timeUnit = MILLISECONDS)
    @BenchmarkMode(Mode.Throughput)
    public void testTrim() {
        TEST_STRING.trim();
    }
    @Benchmark
    @Warmup(iterations = 10, time = 200, timeUnit = MILLISECONDS)
    @Measurement(iterations = 20, time = 500, timeUnit = MILLISECONDS)
    @BenchmarkMode(Mode.Throughput)
    public void testStrip() {
        TEST_STRING.strip();
    }
    public static void main(String[] args) throws Exception {
        org.openjdk.jmh.Main.main(args);
    }
}
# Run complete. Total time: 00:04:16
Benchmark        Mode  Cnt          Score         Error  Units
Test.testStrip  thrpt  200  126939018.461 ± 1462665.695  ops/s
Test.testTrim   thrpt  200  141868439.680 ± 1243136.707  ops/s
How come? Is this a bug or am I doing it wrong?
Testing environment
- CPU - Intel Xeon E3-1585L v5 @3.00 GHz
- OS - Windows 7 SP 1 64-bit
- JVM - Oracle JDK 11.0.1
- Benchamrk - JMH v 1.19
Update
Added more performance tests for different Strings (empty, blank, etc).
Benchmark
@Warmup(iterations = 5, time = 1, timeUnit = SECONDS)
@Measurement(iterations = 5, time = 1, timeUnit = SECONDS)
@Fork(value = 3)
@BenchmarkMode(Mode.Throughput)
public class Test {
    private static final String BLANK = "";              // Blank
    private static final String EMPTY = "   ";           // 3 spaces
    private static final String ASCII = "   abc    ";    // ASCII characters only
    private static final String UNICODE = "   абв    ";  // Russian Characters
    private static final String BIG = EMPTY.concat("Test".repeat(100)).concat(EMPTY);
    @Benchmark
    public void blankTrim() {
        BLANK.trim();
    }
    @Benchmark
    public void blankStrip() {
        BLANK.strip();
    }
    @Benchmark
    public void emptyTrim() {
        EMPTY.trim();
    }
    @Benchmark
    public void emptyStrip() {
        EMPTY.strip();
    }
    @Benchmark
    public void asciiTrim() {
        ASCII.trim();
    }
    @Benchmark
    public void asciiStrip() {
        ASCII.strip();
    }
    @Benchmark
    public void unicodeTrim() {
        UNICODE.trim();
    }
    @Benchmark
    public void unicodeStrip() {
        UNICODE.strip();
    }
    @Benchmark
    public void bigTrim() {
        BIG.trim();
    }
    @Benchmark
    public void bigStrip() {
        BIG.strip();
    }
    public static void main(String[] args) throws Exception {
        org.openjdk.jmh.Main.main(args);
    }
}
Results
# Run complete. Total time: 00:05:23
Benchmark           Mode  Cnt           Score          Error  Units
Test.asciiStrip    thrpt   15   356846913.133 ±  4096617.178  ops/s
Test.asciiTrim     thrpt   15   371319467.629 ±  4396583.099  ops/s
Test.bigStrip      thrpt   15    29058105.304 ±  1909323.104  ops/s
Test.bigTrim       thrpt   15    28529199.298 ±  1794655.012  ops/s
Test.blankStrip    thrpt   15  1556405453.206 ± 67230630.036  ops/s
Test.blankTrim     thrpt   15  1587932109.069 ± 19457780.528  ops/s
Test.emptyStrip    thrpt   15  2126290275.733 ± 23402906.719  ops/s
Test.emptyTrim     thrpt   15   406354680.805 ± 14359067.902  ops/s
Test.unicodeStrip  thrpt   15    37320438.099 ±   399421.799  ops/s
Test.unicodeTrim   thrpt   15    88226653.577 ±  1628179.578  ops/s
Testing environment is the same.
Only one interesting finding. String which contains Unicode characters getting trim()'ed faster than strip()'ed
 
     
     
    