升级到macOS Sierra后,我似乎遇到了"sbt test"性能问题.在以前版本的OS X上花了大约40-50秒才完成.macOS Sierra时代要高得多.我上次跑的时间大约是15分钟.编译时间与'El Capitan'大致相同.
我是团队中唯一一个尝试这个新macOS的人,所以我不知道它是否只发生在我的Mac上,还是一个普遍的问题.
我的同事在Ubuntu上有类似的问题,它与随机数生成有关,减慢了测试速度 - 服务响应速度慢时间:Java SecureRandom&/ dev/random
不幸的是,这对我不起作用.最初我在JDK 8u54上试过,然后尝试更新到JDK 8u102,这也没有帮助.
PS我正在运行Macbook Pro Mid-2015 2.8GHz i7,16GB RAM,1TB SSD.
使用以下代码:
try {
System.out.println(new Date());
InetAddress hostName = InetAddress.getLocalHost();
System.out.println(new Date());
} catch (UnknownHostException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
Thu Oct 22 20:58:22 BST 2015
Thu Oct 22 20:58:52 BST 2015
Run Code Online (Sandbox Code Playgroud)
换句话说,执行30秒.Machine是2015 Macbook Pro with Java 1.8.0_60.
为什么这需要这么长时间?
我有以下Java程序:
class Main {
public static void main(String[] args) throws java.io.IOException {
long start = System.nanoTime();
java.io.File.createTempFile("java_test", ".txt").delete();
System.out.println((System.nanoTime() - start ) / 1e9);
}
}
Run Code Online (Sandbox Code Playgroud)
通常,执行需要大约63毫秒:
$ java Main
0.06308555
Run Code Online (Sandbox Code Playgroud)
但是,一旦我将Android手机作为USB热点连接,它需要更长的时间.根据机器的不同,从3到40秒:
$ java Main
4.263285528
Run Code Online (Sandbox Code Playgroud)
奇怪的是,这里没有任何东西实际通过网络传输 - 插入的网络适配器应该无关紧要.
我做了一个回溯,看起来大部分时间花在NetworkInterface.getAll方法上:
"main" #1 prio=5 os_prio=0 tid=0x00000000023ae000 nid=0x142c runnable [0x000000000268d000]
java.lang.Thread.State: RUNNABLE
at java.net.NetworkInterface.getAll(Native Method)
at java.net.NetworkInterface.getNetworkInterfaces(Unknown Source)
at sun.security.provider.SeedGenerator.addNetworkAdapterInfo(Unknown Source)
at sun.security.provider.SeedGenerator.access$000(Unknown Source)
at sun.security.provider.SeedGenerator$1.run(Unknown Source)
at sun.security.provider.SeedGenerator$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.security.provider.SeedGenerator.getSystemEntropy(Unknown Source)
at sun.security.provider.SecureRandom$SeederHolder.<clinit>(Unknown Source)
at …Run Code Online (Sandbox Code Playgroud) 我们有一个IDEA项目,它包含几个中等大小的Java包和一个非常小的Kotlin包(5个文件).我注意到任何Java软件包的性能都很好,但是对于非常小的Kotlin软件包,它的自动完成,代码分析和编译速度要慢10倍.自动完成偶尔会如此缓慢,以至于popover无法加载所有方法,并且必须逐步加载一些API.每当我们的开发人员键入单词并等待自动完成时,预计自动完成显示大约需要2-5秒.有时自动填充太慢而无法显示任何内容,我们不得不取消该单词并重新输入并等待.代码分析中出现相同的缓慢.这极大地影响了我团队的工作效率.从我们的研究来看,这似乎是一个众所周知的长期问题.这也适用于我们的另一个小项目.我想知道我们能做些什么来解决这个问题?谢谢.
Kotlin插件是最新的,版本:1.1.3-release-IJ2017.2-2 Intellij也是最新版本,2017年2月2.1(建于2017年7月31日)
intellij-idea intellij-plugin kotlin kotlin-android-extensions
java ×3
kotlin ×1
macos-sierra ×1
networking ×1
performance ×1
sbt ×1
scala ×1
scalatest ×1
windows ×1
windows-7 ×1