V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Dmego  ›  全部回复第 1 页 / 共 1 页
回复总数  7
2022-05-09 22:42:29 +08:00
回复了 Dmego 创建的主题 Java 关于 HashMap 中 tableSizeFor 方法的性能问题
@bxb100 我用 Blackhole 也试了一下,jdk7 版本的没之前那么离谱了,但是还是有些差距。
我又尝试了一下把 大小的校验 和 三元运算 都去掉:

```java
static int tableSizeFor(int cap) {
int n = cap - 1;
n |= n >>> 1;
n |= n >>> 2;
n |= n >>> 4;
n |= n >>> 8;
n |= n >>> 16;
return n + 1;
}

static int roundUpToPowerOf2(int cap) {
return Integer.highestOneBit((cap - 1) << 1);
}

static int tableSizeFor_JDK11(int cap) {
return (-1 >>> Integer.numberOfLeadingZeros(cap - 1)) + 1;
}
```
这次跑出来结果就比较真实了,jdk7 和 jdk11 的很接近:

```shell
Benchmark Mode Cnt Score Error Units
TableSizeForTest2.jdk17 avgt 5 54189763.703 ± 5052484.742 ns/op
TableSizeForTest2.jdk7 avgt 5 55255800.741 ± 3588948.883 ns/op
TableSizeForTest2.jdk8 avgt 5 125044190.547 ± 15537228.379 ns/op
```

观察了一下,jdk7 的 roundUpToPowerOf2 方法里是先 判断大小和 三元运算 后再调用 位运算方法(highestOneBit) 得出结果。而 jdk11 的 tableSizeFor 方法是先调用 位运算方法(numberOfLeadingZeros) 得出结果后,再判断大小和三元运算。对计算机和 JVM 底层不是很熟悉,感觉像这块的影响
2022-04-24 21:53:04 +08:00
回复了 wnanbei 创建的主题 程序员 Docker for Windows 目前坑还多吗?做开发环境是否可用呢?
2022-03-11 19:41:02 +08:00
回复了 luvroot 创建的主题 互联网 yuque vip 活动可以领到 1 年的
下载写作利器语雀,领会员

邀请码:QNRR8U

打开语雀 App ,进入 [我] - [活动福利] - [输入邀请码] ,领取会员

App 下载地址: https://www.yuque.com/download
大佬拉我进群 wx: R3JlYXRIdWI=
2020-06-08 15:29:24 +08:00
回复了 rockcat 创建的主题 Notion 打算印象笔记转 Notion
@rockcat 我也发现了,后半部分代码都没有了
2020-02-18 17:19:01 +08:00
回复了 Mogugugugu 创建的主题 JetBrains 关于对 IDEA 打字卡顿(CPU 占用率高)的一些尝试和解决方案
同样遇到这个问题
2020-01-19 17:36:55 +08:00
回复了 wnanbei 创建的主题 程序员 Docker for Windows 目前坑还多吗?做开发环境是否可用呢?
用 WSL2 没问题, Docker,kubernetes 环境都能满足,目前使用来看唯一缺点就是 IO 性能还需要提高。前不久我在安装环境的时候还整理出了一篇文档,有需要的可以参考:https://dmego.me/2019/12/21/make-wsl2-as-a-productivity-tool
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2774 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 18ms · UTC 00:24 · PVG 08:24 · LAX 16:24 · JFK 19:24
Developed with CodeLauncher
♥ Do have faith in what you're doing.