我对Java的String.indexOf(String subString)的性能有疑问.
我编写了一个类来比较调用String.indexOf(String subString)的性能与从String的源内部复制源并使用完全相同的参数调用内部indexOf().
尽管调用堆栈的深度为2帧,但直接调用String.indexOf()时性能似乎提高了约4倍.
我的JVM是JDK1.7.0_40 64bit(windows hotspot).我的机器运行Windows,配备i7-4600U CPU,16GB内存.
这是代码:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
public class TestIndexOf implements Runnable {
final static String s0 = "This is my search string, it is pretty long so can test the speed of the search";
final static String s1 = "speed of the search";
final static char[] c0 = s0.toCharArray();
final static char[] c1 = s1.toCharArray();
final static byte[] b0 = s0.getBytes();
final static byte[] b1 = s1.getBytes();
static …Run Code Online (Sandbox Code Playgroud)