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

问题描述

今天无聊写了一个列表拼接两种方式的对比,主要是对比一下用“++”和“|”拼接列表的速度,书上说,“++”拼接列表是极为低效的**作。这里我用代码实现了一下,分别用两种方法生成N个零的列表:%%列表拼接对比 listsTimeCon(N)-> {TimeOne,_} = timer:tc(**,listsCon1,), {TimeTwo,_} = timer:tc(**,listsCon2,), case TimeOne > TimeTwo of true -> io:format("'++',~p~n",); _ -> io:format("'',~p~n",) end. listsCon1(0)-> []; listsCon1(N)-> ++listsCon1(N-1). listsCon2(0)-> []; listsCon2(N)-> . 编译并运行后结果是,当列表长度较短的时候,“|”的速度比较快,但是当列表长度较长的时候,“++”的拼接速度会比较快,我尝试**出临界点的时候,发现每次**的结果也有出入,例如当N等于100000。出现这个问题可能因为内存分配问题,或者是timer:tc/3的使用方式有错,请大神们提点一下小弟,谢谢!

时间: 2024-12-20 18:53:33

erlang列表拼接的两种方式的速度对比的相关文章

实现点击列表弹出列表索引的两种方式_javascript技巧

方式一,使用利用事件冒泡委托给列表的父节点去处理的方式: 复制代码 代码如下: var ulObj = document.getElementById("myUl"); ulObj.onclick = function (event) { var tg = event.target; var liArray = ulObj.getElementsByTagName("li"); for (var i = 0; i < liArray.length; i++)

python 列表转化为字符串的两种方式

Python 列表转化为字符串的两种方式 (1)方式一 Python代码   >>> juice=['orange','a','b']   >>> ''.join(juice)   'orangeab'       (2)方式二: Python代码   >>> juice=['orange','a','b']   >>> content='%s'*len(juice) % tuple(juice)   >>> pri

详解android与服务端交互的两种方式

做Android开发的程序员必须知道android客户端应该如何与服务端进行交互,这里主要介绍的是使用json数据进行交互.服务端从数据库查出数据并以json字符串的格式或者map集合的格式返回到客户端,客户端进行解析并输出到手机屏幕上. 此处介绍两种方式:使用Google原生的Gson解析json数据,使用JSONObject解析json数据 一.使用Google原生的Gson解析json数据: 记得在客户端添加gson.jar. 核心代码: 服务端: package com.mfc.ctrl

Javascript学习总结:Js继承的两种方式

文章简介:总结就是利用对象冒充机制的call方法把父类的属性给抓取下来,而成员方法尽量写进被所有对象实例共享的prototype域中,以防止方法副本重复创建.然后子类继承父类prototype域来抓取下来所有的方法.如想彻底理清这些调用链的关系,推荐大家多关注Js中prototype的constru 一直想对Javascript再次做一些总结,正好最近自己写了一个小型Js UI库,总结了一下Js的继承机制,在网上也看了一些前辈们博客里的总结,感觉分析不是特别全面.这里仅仅是把自己的学习体会拿出来

python: 多线程实现的两种方式及让多条命令并发执行

一 概念介绍         Thread 是threading模块中最重要的类之一,可以使用它来创建线程.有两种方式来创建线程:一种是通过继承Thread类,重写它的run方法:另一种是创建一个threading.Thread对象,在它的初始化函数(__init__)中将可调用对象作为参数传入.         Thread模块是比较底层的模块,Threading模块是对Thread做了一些包装的,可以更加方便的被使用.         另外在工作时,有时需要让多条命令并发的执行, 而不是顺序

SqlServer2008 数据库同步的两种方式(Sql JOB)

原文:SqlServer2008 数据库同步的两种方式(Sql JOB)   数据库同步是一种比较常用的功能.以下结合我自己的体会整理的,如果有理解不完全或者有误的地方望大牛不理赐教.下面介绍的就是数据库同步的两种方式: 1.SQL JOB的方式  sql Job的方式同步数据库就是通过SQL语句,将一个数据源中的数据同步到目标数据库中.特点是它可以灵活的通过SQL的方式进行数据库之间的同步操作.可以在制定的时间时间作为任务计划自动执行.缺点是需要写SQL来进行操作.既然是数据库之间的同步就涉及

Android通过Handler与AsyncTask两种方式动态更新ListView(附源码)_Android

本文实例讲述了Android通过Handler与AsyncTask两种方式动态更新ListView的方法.分享给大家供大家参考,具体如下: 有时候我们需要修改已经生成的列表,添加或者修改数据,notifyDataSetChanged()可以在修改适配器绑定的数组后,不用重新刷新Activity,通知Activity更新ListView.今天的例子就是通过Handler AsyncTask两种方式来动态更新ListView. 布局main.xml: <?xml version="1.0&qu

Wps 2013 拼音标注两种方式分析

Wps 2013 拼音标注两种方式分析 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 本篇确实与技术无关,只是为了给孩子做点语文复习题. 不过,可以联想一下,在 iOS 和 Android 中

php include加载文件两种方式效率比较_php技巧

先来说说两种方式: 1)定义一个字符串变量,里面保存要加载的文件列表.然后foreach加载. 复制代码 代码如下: $a = '/a.class.php;/Util/b.class.php;/Util/c.class.php'; $b = '/d.php;/e.class.php;/f.class.php;/g.class.php'; // 加载基本系统文件 $kernel_require_files = explode(';', $a);//SYS_REQUIRE_LIB_FILE_LIST