Java 和 Erlang 的列表元素添加测试

maillist上面对 “VM & BEAM Specs : idea for improving, the lists support”的争论很有意思,我也随手测一把看看

JDK 1.5.0_11
Erlang/OTP R11B-5

$ javac ListAppend.java
$ /home/jdk/bin/java -server ListAppend
Total time:3439ms
$ erlc list_append.erl
$ erl -noshell -noinput -s list_append main -s init stop
Total time:4408ms
$ erlc +native list_append.erl
$ erl -noshell -noinput -s list_append main -s init stop
Total time:3855ms

Java代码:
import java.util.*;

public class ListAppend {
    public static void main(String[] args) {
		long begin = System.currentTimeMillis();
		LinkedList list = new LinkedList();
		for (int i=0; i<10000000; i++) {
		    list.add("element");
		}
		System.out.println("Total time:" + (System.currentTimeMillis()-begin) + "ms");
	}
}

这里list里面的引用都是指向同一份String实例的。

Erlang代码:
-module(list_append).

-export([main/0]).

main() ->
	test(10000000, []).

test(0, _List) ->
	{_, Duration} = statistics(wall_clock),
	io:format("Total time:~pms~n", [Duration]);
test(N, List) ->
	test(N-1, [element|List]).

这里使用element而不是"Element",因为Erlang的列表里面保存的是值。

你可能感兴趣的:(java,jdk,erlang,idea)