获取当前系统时间:
long startTime = System.currentTimeMillis();
计时器:开始的位置获取一次时间,结束的时候获取一次时间,用:
endTime - stratTime;
举例:
默认JDK配置下测试StringBuffer和StringBuilder的效率:
PS D:\DEV\code\java\java101> java -version
openjdk version "1.8.0_322"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM (Temurin)(build 25.322-b06, mixed mode)
测试用代码:
import java.util.Properties;
import java.util.Random;
public class TestWithTimer {
public static void main(String[] args) {
Properties p = System.getProperties();
String[] p_formated = p.toString().split(",");
for (String pstr : p_formated) {
System.out.println(pstr);
}
int testLoopCtlForeachTestTask = 1_000_000_000;
int totalTestLoopCtl = 10;
long timer_sum_buffer = 0;
long timer_sum_builder = 0;
//String testStr = "1234567890";
long startTime = 0L;
long endTime = 0L;
for (int totalTestLoopCtlInLoop = 0; totalTestLoopCtlInLoop < totalTestLoopCtl; totalTestLoopCtlInLoop++) {
Random rd = new Random();
String testStr = String.valueOf(rd.nextLong());
startTime = System.currentTimeMillis();
for (int i = 0; i < testLoopCtlForeachTestTask; i++) {
StringBuffer sbuf = new StringBuffer(testStr).reverse();
}
endTime = System.currentTimeMillis();
long sBuffer_timer_delta = endTime - startTime;
timer_sum_buffer+=sBuffer_timer_delta;
System.out.println("stringBufferFromStringTest:" + (sBuffer_timer_delta));
startTime = System.currentTimeMillis();
for (int i = 0; i < testLoopCtlForeachTestTask; i++) {
StringBuilder sb = new StringBuilder(testStr);
}
endTime = System.currentTimeMillis();
long sBiulder_timer_delta = endTime - startTime;
timer_sum_builder+=sBiulder_timer_delta;
System.out.println("stringBuilderFromStringTest:" + (sBiulder_timer_delta));
System.out.println("-----------"+totalTestLoopCtlInLoop+"--------------");
}
double timer_sum_buffer_double = timer_sum_buffer;
double timer_sum_builder_double = timer_sum_builder;
System.out.println("TestResult is:\n sBuffer 1Billion:"+(timer_sum_buffer_double/totalTestLoopCtl)+"\n sBuilder 1Billion:"+(timer_sum_builder_double/totalTestLoopCtl));
}
}
输出:
{java.runtime.name=OpenJDK Runtime Environment
sun.boot.library.path=C:\Program Files\Eclipse Adoptium\jdk-8.0.322.6-hotspot\jre\bin
java.vm.version=25.322-b06
user.country.format=CN
java.vm.vendor=Temurin
java.vendor.url=https://adoptium.net/
path.separator=;
java.vm.name=OpenJDK 64-Bit Server VM
file.encoding.pkg=sun.io
user.country=US
user.script=
sun.java.launcher=SUN_STANDARD
sun.os.patch.level=
java.vm.specification.name=Java Virtual Machine Specification
user.dir=D:\DEV\code\java\java101
java.runtime.version=1.8.0_322-b06
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=C:\Program Files\Eclipse Adoptium\jdk-8.0.322.6-hotspot\jre\lib\endorsed
os.arch=amd64
java.io.tmpdir=C:\Users\avatu\AppData\Local\Temp\
line.separator=
java.vm.specification.vendor=Oracle Corporation
user.variant=
os.name=Windows 10
sun.jnu.encoding=GBK
java.library.path=C:\Program Files\Eclipse Adoptium\jdk-8.0.322.6-hotspot\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Python310\Scripts\;C:\Program Files\Python310\;C:\Program Files\Eclipse Adoptium\jdk-8.0.322.6-hotspot\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\dotnet\;C:\Program Files\Git\cmd;C:\Users\avatu\.cargo\bin;C:\Users\avatu\AppData\Local\Microsoft\WindowsApps;C:\Users\avatu\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\avatu\.dotnet\tools;C:\Users\avatu\AppData\Local\GitHubDesktop\bin;.
java.specification.name=Java Platform API Specification
java.class.version=52.0
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
os.version=10.0
user.home=C:\Users\avatu
user.timezone=
java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=GBK
java.specification.version=1.8
java.class.path=C:\Users\avatu\AppData\Roaming\Code\User\workspaceStorage\d9cb4d9bacc23ff8149200f35a590a43\redhat.java\jdt_ws\java101_6f898212\bin
user.name=avatu
java.vm.specification.version=1.8
sun.java.command=TestWithTimer
java.home=C:\Program Files\Eclipse Adoptium\jdk-8.0.322.6-hotspot\jre
sun.arch.data.model=64
user.language=en
java.specification.vendor=Oracle Corporation
user.language.format=zh
awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode
java.version=1.8.0_322
java.ext.dirs=C:\Program Files\Eclipse Adoptium\jdk-8.0.322.6-hotspot\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext
sun.boot.class.path=C:\Program Files\Eclipse Adoptium\jdk-8.0.322.6-hotspot\jre\lib\resources.jar;C:\Program Files\Eclipse Adoptium\jdk-8.0.322.6-hotspot\jre\lib\rt.jar;C:\Program Files\Eclipse Adoptium\jdk-8.0.322.6-hotspot\jre\lib\sunrsasign.jar;C:\Program Files\Eclipse Adoptium\jdk-8.0.322.6-hotspot\jre\lib\jsse.jar;C:\Program Files\Eclipse Adoptium\jdk-8.0.322.6-hotspot\jre\lib\jce.jar;C:\Program Files\Eclipse Adoptium\jdk-8.0.322.6-hotspot\jre\lib\charsets.jar;C:\Program Files\Eclipse Adoptium\jdk-8.0.322.6-hotspot\jre\lib\jfr.jar;C:\Program Files\Eclipse Adoptium\jdk-8.0.322.6-hotspot\jre\classes
java.vendor=Temurin
sun.stderr.encoding=ms936
file.separator=\
java.vendor.url.bug=https://github.com/adoptium/adoptium-support/issues
sun.io.unicode.encoding=UnicodeLittle
sun.cpu.endian=little
sun.desktop=windows
sun.cpu.isalist=amd64}
stringBufferFromStringTest:27703
stringBuilderFromStringTest:18398
-----------0--------------
stringBufferFromStringTest:28843
stringBuilderFromStringTest:19523
-----------1--------------
stringBufferFromStringTest:28962
stringBuilderFromStringTest:19580
-----------2--------------
stringBufferFromStringTest:27225
stringBuilderFromStringTest:19677
-----------3--------------
stringBufferFromStringTest:27278
stringBuilderFromStringTest:19753
-----------4--------------
stringBufferFromStringTest:27299
stringBuilderFromStringTest:19709
-----------5--------------
stringBufferFromStringTest:28956
stringBuilderFromStringTest:19531
-----------6--------------
stringBufferFromStringTest:28976
stringBuilderFromStringTest:19539
-----------7--------------
stringBufferFromStringTest:28896
stringBuilderFromStringTest:19492
-----------8--------------
stringBufferFromStringTest:27697
stringBuilderFromStringTest:19718
-----------9--------------
TestResult is:
sBuffer 1Billion:28183.5
sBuilder 1Billion:19492.0