在一些RT要求比较高的场景中,如果每个场景和流程我们都能知晓大致的执行时间,那么对于程序设计或者排查问题还有很有帮助的。
下面我列出了一些经常出现,又比较重要场景的执行时间,大家也可以补充。周末在家把相关的数据基本测试过,再结合以前的经验,数据基本靠谱。
一、Java基本操作
- 一次整型、浮点型赋值: 纳秒级
- 一次字符串赋值:微秒级
- 一次字符串的拼接:微秒级 至少上百微秒
- new一个对象: 微秒级
- 一次if else判断: 纳秒级
- 一次与、非、移位运算: 纳秒级
- 一次加减乘除: 纳秒级
- for循环遍历元素之间的间隔: 纳秒级
- 一次异常捕获的时间:微秒级 一般几十微秒
- 隐式锁加锁时间:纳秒级
- 显示锁加锁时间:微秒级
字体加粗的微秒级的操作要注意了,尤其是在for循环中
二、网络相关
- 一次serverSocket初始化时间:毫秒级: 一般几毫秒
- 一次rpc: 毫秒级 一般4毫秒以内
- 一次序列化时间:微秒或纳秒级
三、IO相关
- 一次读取内存和写内存的时间: 微秒级 一般1~100微秒
- 访问一次机械硬盘时间: 毫秒级
- 访问一次SSD硬盘时间:微秒级
四、JVM相关
1. 一次ygc:毫秒级 一般几十毫秒
2. 一次fgc:毫秒级或秒级