小编cyb*_*bye的帖子

Java VM内存性能 - Array写入比Array读取更快吗?

我在java中对一个长数组执行了一个简短的基准测试,结果非常奇怪.看起来随机写入的顺序读取比使用顺序写入的随机读取更快 - 一半时间.有谁知道为什么?

以下是两种方法,当按顺序读取时,随机写入一些长整数的数组(使用-Xmx2G左右运行),并在随机写入时按顺序读取:

import java.util.Random;


public class Scratch {
static Random random = new Random();
static long[] arr = new long[100000000];

static void seqReadRandWrite() {
    for(int i=0;i<arr.length;i++) {
        int at = random.nextInt(arr.length);
        arr[at] = arr[i];
    }
}

static void seqWriteRandRead() {
    for(int i=0;i<arr.length;i++) {
        int at = random.nextInt(arr.length);
        arr[i] = arr[at];
    }
}

public static void main(String[] args) throws Exception {

    seqWriteRandRead(); // warm up

    long nanos = System.nanoTime();
    seqReadRandWrite();
    System.out.println("Time: " + (System.nanoTime()-nanos) + "ns");

    nanos = System.nanoTime(); …
Run Code Online (Sandbox Code Playgroud)

java memory performance

12
推荐指数
1
解决办法
373
查看次数

如何更新mutable.Map中的当前值?

是否有一种优雅的方式来更新Map中已存在的值?

这看起来太吓人了:

val a = map.get ( something ) 
if ( a != null ) // case .. excuse my old language
   a.apply( updateFunction )
else 
   map.put ( something, default )
Run Code Online (Sandbox Code Playgroud)

scala

8
推荐指数
1
解决办法
3278
查看次数

标签 统计

java ×1

memory ×1

performance ×1

scala ×1