`
温铭20
  • 浏览: 3351 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

erlang列表拼接的两种方式的速度对比

阅读更多

今天无聊写了一个列表拼接两种方式的对比,主要是对比一下用“++”和“|”拼接列表的速度,书上说,“++”拼接列表是极为低效的操作。这里我用代码实现了一下,分别用两种方法生成N个零的列表:

%%列表拼接对比
listsTimeCon(N)->
	{TimeOne,_} = timer:tc(test,listsCon1,[N]),
	{TimeTwo,_} = timer:tc(test,listsCon2,[N]),
	case TimeOne > TimeTwo of
		true ->
			io:format("'++',~p~n",[TimeOne - TimeTwo]);
		_ ->
			io:format("'[|]',~p~n",[TimeTwo - TimeOne])
	end.
listsCon1(0)->
	[];
listsCon1(N)->
	[0]++listsCon1(N-1).

listsCon2(0)->
	[];
listsCon2(N)->
	[0|listsCon2(N-1)].

         编译并运行后结果是,当列表长度较短的时候,“|”的速度比较快,但是当列表长度较长的时候,“++”的拼接速度会比较快,我尝试测试出临界点的时候,发现每次测试的结果也有出入,例如当N等于100000。出现这个问题可能因为内存分配问题,或者是timer:tc/3的使用方式有错,请大神们提点一下小弟,谢谢!

分享到:
评论

相关推荐

    Erlang6大数据存储方式总结

    Erlang,一种由Ericsson开发的面向并发的编程语言,以其在分布式系统和实时高可用性场景中的优秀性能而闻名。在Erlang中,处理大数据存储有多种方式,其中包括ETS(Erlang Term Storage)、DETS(Distributed Erlang...

    用matlab产生 erlang分布的随机数,两种方法

    这两种方法都能有效地生成Erlang分布的随机数。`gammavariate`方法简单直接,而利用CDF的方法则更灵活,可以应用于没有现成函数的情况。在实际应用中,应根据具体需求和计算效率选择合适的方法。 在处理这些随机数...

    erlang两种参数模块化

    首先,Erlang是一种严格、动态类型的函数式编程语言。它的特点是没有破坏性更新,即数据不可变。Erlang内置了对并发的支持,通过进程实现,这些进程之间通过异步消息传递进行通信。在Erlang中,编译单元是模块,每个...

    两本erlang电子书

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,用于构建高可用性、分布式和实时系统。OTP(Open Telecom Platform)是与Erlang一起使用的框架和库,旨在简化并发应用程序的设计和维护...

    erlang编程 Introducing Erlang

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

    Erlang官网下载过慢

    Erlang的安装包分为32位和64位两种,这对应于不同的操作系统架构。32位版本适用于传统的32位操作系统,如Windows XP 32-bit或某些旧版Linux发行版。64位版本则用于64位操作系统,如Windows 10 64-bit、macOS以及...

    <27>erlang record

    在Erlang中,Record提供了一种方便的方式来定义和访问具有固定字段的数据类型。 在Erlang中,Records是由一个特殊的语法创建的,形如`#record_name{field1 = value1, field2 = value2, ...}`。Record_name是记录的...

    erlang资源

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,用于构建高可用性、分布式和实时系统。这个“erlang资源”包含两本PDF书籍——《Erlang并发编程》和《Erlang入门手册》,它们是深入...

    erlang趣学指南

    Erlang趣学指南还强调了Erlang的两个核心特性:高并发和高容错。Erlang的设计哲学使得它能够优雅地处理高并发场景,并且由于进程的轻量级和消息传递机制,Erlang能够在保持高性能的同时实现容错。 这本书不仅适合...

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

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

    erlang25.0 windows版本

    Erlang是一种高级编程语言,特别适用于并发、分布式和实时系统。它由Ericsson公司开发,主要用于构建高可用性、容错性和可扩展性的软实时系统。Erlang的25.0版本是该语言的一个更新,针对Windows操作系统进行了优化...

    erlang_版本24.3.4.4

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,主要用于构建高可用性、分布式和实时系统。版本24.3.4.4是Erlang的一个更新版本,包含了对先前版本的改进和修复。Erlang以其强大的错误...

    Erlang_CNode用户指

    CNode提供了一种方式,使得开发者可以利用Erlang的并发特性和强大错误处理能力,同时利用C语言的高效性能和库资源。CNode的主要功能包括创建Erlang进程,发送和接收消息,以及调用Erlang的函数。 **Erlang_CNode...

    erlang port driver test

    描述中的 "vs project" 可能是指这是一个对比或者竞争性的项目,可能是在比较不同方式与外部代码交互的效率、稳定性和灵活性。Port Driver 可能与其他 Erlang 外部接口技术,如 NIF(Native Implemented Function)...

    erlang9.rar

    Erlang是一种高级编程语言,特别适用于并发、分布式和实时计算系统。它的设计目标是创建一个高可用性、容错性强、低延迟的系统。Erlang9指的是Erlang/OTP(Open Telephony Platform)的第9个主要版本。OTP是Erlang...

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

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

    erl_nif 扩展erlang的另外一种方法

    Erlang是一种面向并发的、函数式编程语言,被广泛应用于分布式系统和高可用性服务。在Erlang中,为了实现与C或其他低级语言的高效交互,Erlang提供了一个名为`erl_nif`的接口。本文将深入探讨`erl_nif`,了解它是...

    erlang使用post方式发送json数据

    学习erlang的时候尝试编写的小例子,使用post方式发送json数据来进行http请求,希望能帮到大家~

    erlang压缩包.rar

    - **递归**:由于Erlang的进程特性,递归是常见的编程方式,尤其在处理列表和树结构时。 - **错误处理**:Erlang的异常处理通过`try...catch...after`语句实现,允许优雅地处理错误情况。 了解了这些基础知识后,你...

    xiandiao_erlang_Erlang课后习题_

    Erlang是一种并发式、函数式的编程语言,由瑞典电信设备制造商Ericsson开发,最初用于构建高可用性、容错性和可扩展性的分布式系统。"xiandiao_erlang_Erlang课后习题_"这个压缩包文件包含了Erlang程序设计第二版的...

Global site tag (gtag.js) - Google Analytics