`
AvinDev
  • 浏览: 112988 次
社区版块
存档分类
最新评论

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的列表里面保存的是值。
分享到:
评论
2 楼 cypherpunks 2010-12-20  
$ javac *.java
$ java LinkedListAppend
Total time:1632ms

$ erlc +native list_append.erl
$ erl -noshell -noinput -s list_append main -s init stop
Total time:1196ms

把LinkedList改成LinkedList...
$ java ArrayListAppend
Total time:162ms

另外,這論壇的注冊手續真是煩人。
1 楼 mryufeng 2007-08-07  
这个层面效率应该差不太多

相关推荐

    java php python erlang 千万级内存数据性能比较

    在提供的文件"erlang_list_dict_test.erl"和"erlang_list_dict_test - pro_dict-check_duplicate.erl"中,可以看到Erlang对列表和字典(dict)操作的性能测试。Erlang的字典数据结构通常比其他语言的哈希表更快,...

    erlang-java聊天

    在开发过程中,对Erlang和Java代码进行充分的单元测试和集成测试至关重要。可以使用Erlang的Test Server(Tsung)和Java的JUnit等工具进行测试。同时,日志记录和调试工具可以帮助识别和解决问题。 总结,"erlang-...

    erlang调用java

    `Erlang`的原子、列表、二进制等可以转换为`Java`的`String`、`byte[]`等。反之,`Java`对象可以通过序列化转换为`Erlang`的二进制。 5. **调用`J2EE`方法**:一旦连接建立,你就可以通过`Java`的反射API来调用`...

    Erlang-or-java.rar_erlang

    描述中提到该示例已经过测试且易于理解,这意味着我们将探讨如何在Erlang和Java之间建立连接并进行数据交换。 首先,让我们深入了解一下Erlang和Java之间的通信机制。通常,这种跨语言交互可以通过以下几种方式实现...

    RabbitMQ Java测试客户端

    在这个“RabbitMQ Java测试客户端”项目中,我们可以看到它包含了Java客户端的实现,这对于理解和使用RabbitMQ与Java应用程序的集成至关重要。 首先,我们要理解Java在RabbitMQ中的作用。Java客户端库允许开发者在...

    Erlang和RabbitMQ安装包

    Erlang和RabbitMQ是两个在分布式系统和消息队列领域中至关重要的技术。Erlang是一种函数式编程语言,以其并发性、容错性和热代码升级能力而闻名,而RabbitMQ则是基于Erlang构建的一个开源消息代理,用于实现应用程序...

    erlang节点连通测试

    Erlang是一种面向并发的、强类型、动态类型的编程语言,尤其在...以上就是关于Erlang节点连通测试和按需连接的相关知识。理解并熟练掌握这些概念和技巧,将有助于你在构建分布式Erlang系统时实现高效、可靠的节点通信。

    rabbitMq和erlang安装包

    rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上。

    rabbitmq+Erlang工具+压力测试jmeter

    在标题“rabbitmq+Erlang工具+压力测试jmeter”中,我们可以理解为这是一个关于使用Erlang构建和管理RabbitMQ服务器,并结合JMeter进行性能测试的场景。首先,我们需要安装Erlang环境,这通过"otp_win64_24.3.3.exe...

    <27>erlang record

    标题中的“&lt;27&gt;erlang record”可能指的是Erlang编程语言中的Record特性,它是一种数据结构,类似于结构体或者哈希表,用于组织和操作数据。在Erlang中,Record提供了一种方便的方式来定义和访问具有固定字段的数据...

    c# 版ErlangOtp跨平台通信框架(Java版的转译)

    Java和C#虽然都属于JVM和.NET生态系统,但它们之间存在差异,因此,将Java版本的Erlang OTP通信机制转译为C#,可以使.NET开发者更方便地利用Erlang OTP的强大功能。 标签中的"ErlangOtp"是关键知识点,代表了Erlang...

    erlang编程 Introducing Erlang

    Erlang的语法简洁,支持模式匹配、函数式编程、列表处理和递归等特性。它的动态类型系统和强大的类型推断让代码更加灵活。 Simon St. Laurent的《Introducing Erlang》这本书深入浅出地介绍了这些概念,是学习...

    rabbitmq-server-3.8.3.exe和erlang22.2.exe 64位压缩文件

    在压缩包的文件名称列表中,"otp_win64_22.2.exe"是Erlang OTP 22.2版本的Windows 64位安装程序,用户需要先安装这个来为RabbitMQ提供运行环境。"rabbitmq-server-3.8.3.exe"则是RabbitMQ服务器的安装程序,用户在...

    ErlangB和ErlangC计算工具(exe可执行文件+excel两个)

    Erlang B和Erlang C是电信领域中两种重要的流量模型,用于预测和分析通信系统中的呼叫处理能力和拥塞情况。这两个模型由丹麦工程师Agner Krarup Erlang在20世纪初提出,至今仍广泛应用于现代通信网络的设计与优化。 ...

    RabbitMQ3.9.13和ErLang24.2版本

    5. **语言和库更新**:Erlang的新版本通常会包含语言特性的增强和库的更新,这些改进可能会间接影响到RabbitMQ的性能和功能。 在安装这两个软件时,首先需要下载Erlang的erlang_24.2.exe文件,安装后才能运行...

    使用erlang进行UDP测试

    使用erlang进行UDP测试,这几个是为了凑够20字。

    erlang_版本24.3.4.4

    4. **构建和测试**:执行`make`命令开始编译Erlang。这个过程可能需要一些时间,因为它会编译整个Erlang虚拟机和标准库。编译完成后,你可以通过运行`make tests`来验证Erlang的正确性。 5. **安装**:最后,使用`...

    erlang资源

    5. **REPL(Read-Eval-Print Loop)**:Erlang shell的使用,它是学习和测试Erlang代码的重要工具。 6. **实际应用案例**:可能包含Erlang在实时系统、网络通信、数据库或Web服务等领域的应用示例。 这两本书结合...

    一个我自己学习Erlang的聊天室服务器及客户端代码

    本项目提供了一个使用Erlang编写的聊天室服务器端代码以及Java编写的客户端代码,这为我们深入理解Erlang的并发特性和Java与Erlang的交互提供了实践案例。 一、Erlang聊天室服务器端 1. 并发处理:Erlang的轻量级...

Global site tag (gtag.js) - Google Analytics