`
mozhenghua
  • 浏览: 324478 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

erlang读文件的速度为啥这么慢?

阅读更多

        今天公司技术比武,比赛题目是给一个1.1g的大文本,统计文本中词频最高的前十个词。花了两天用erlang写完了代码,但是放到公司16核的机器上这么一跑,结果不比不知道,一比吓一条。erlang写的代码执行时间花了55秒左右,同事们有的用java,有的用C,还有的用C++,用C最快一个老兄只花了2.6秒,用java的也只用了3.2秒。相比之下erlang的代码,真是一头大蜗牛,太慢了。

        但是我想实际测试一下,别的都不测,先测试一下用erlang遍历完一个1.1G的文本到底要花多久(只遍历,其他啥都不做)。

        代码如下:

          

-module(file_read).

-export([read/1]).


read(File)->
case file:open(File, [ raw, binary]) of
           {ok, Fd} ->
			   scan_file(Fd,file:read(Fd, 1024));
           {error, Reason} ->
                  {error, Reason}
end	.


scan_file(Fd, {ok, Binary}) ->
    scan_file(Fd, file:read(Fd, 1024));
scan_file(Fd,  eof) ->
    file:close(Fd);
scan_file(Fd,  {error, Reason}) ->
    file:close(Fd).

 在打开文件的地方特地用了option是[ raw, binary],这样可以保证在打开文件erlang不会起一个额外的进程,并且是以二进制流的方式去打开文件,应该是最快了。

  但是经过测试:

timer:tc(file_read,read,["d:\\download\\doc\\doc.txt"]).

 结果确是:

{26286000,ok}

 整整花了26秒,就算在16核的机器上,把文件切成16份,用16各进程去读文件,读完文件也要花 26/16=1.6秒,这还只是光读文件所要花的时间,没有算上其他计算词频所用的时间。

   

  貌似erlang在计算密集型的计算上确实比其他语言没有啥优势

分享到:
评论

相关推荐

    Erlang官网下载过慢

    标题中提到的“Erlang官网下载过慢”可能是因为网络问题或者官方服务器的繁忙导致的,这对于急需安装或更新Erlang的开发者来说是一个常见问题。在这种情况下,用户可以选择通过第三方镜像站点或者从他人分享的安装包...

    erlang 23.1

    最新 erlang 下载,帮助大家解决下载慢的问题。官网的下载真的很慢很慢很慢,而且文件也很大,为了方便大家的下载,这里提供一份大家可以接受的积分,可以私信。

    基于erlang的文件存储

    本项目“基于Erlang的文件存储”就是这样一个尝试,它利用Erlang强大的并发处理能力和分布式特性,为服务端提供稳定的基础架构,而客户端则通过Java的Swing组件提供用户友好的交互界面。以下是对该项目中涉及的技术...

    Erlang 运行环境的安装文件

    Erlang 是一种功能强大的并发性编程语言,主要用于构建分布式、高并发、容错性强的系统,尤其在电信、银行和互联网基础设施等领域有着广泛的应用。本文将详细介绍如何安装和配置 Erlang 运行环境。 首先,了解 ...

    erlang 20.3.zip

    由于官方下载可能速度较慢,这个压缩包为需要快速获取Erlang环境的用户提供了方便。 Erlang 20.3版本发布于2017年,包含了一些重要的改进和新特性: 1. **性能优化**:Erlang 20.3在内存管理和垃圾回收方面进行了...

    erlang25.0 windows版本

    6. **编译器升级**:Erlang的BEAM虚拟机和编译器可能会有优化,使得编译速度更快,生成的代码更高效。 作为“源码软件”,Erlang 25.0同样提供了源代码,开发者可以深入研究其内部工作原理,进行定制化开发,或者为...

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

    总的来说,Erlang B和Erlang C模型是电信系统设计中的基础工具,而提供的计算工具则是将理论转化为实践的关键桥梁。通过这些工具,我们可以更深入地理解通信网络的性能瓶颈,并制定相应的优化方案,以提高服务质量和...

    erlang 21.3

    这意味着该压缩包是为Linux环境设计的,用户需要在Linux环境下编译和安装Erlang 21.3。 在Linux上安装Erlang 21.3的步骤通常包括以下几个关键步骤: 1. **解压**: 首先,使用`tar -zxvf otp_src_21.3.tar.gz`命令...

    改进erlang版的protobuf代码

    1. **解析速度优化**:原生protobuf在Erlang中的解析速度可能较慢,改进可能涉及更高效的解码算法或利用Erlang的二进制操作特性来加速处理。 2. **内存管理优化**:可能通过减少内存分配和拷贝,或者采用更有效的...

    erlang编程 Introducing Erlang

    BEAM是Erlang运行时系统的名称,全称为伯尔尼高级执行机器(Bergen Erlang Virtual Machine)。它负责解释Erlang字节码,提供内存管理、垃圾回收和并发调度等功能。 ### 10. 语言特性 Erlang的语法简洁,支持模式...

    erlang-20.3.6.zip

    描述中提到这是针对Linux平台的安装包,并指出由于Erlang官网下载速度慢,作者已经下载并上传,以便他人能更快地获取。 "linux下的erlang20.3.6安装包"意味着这个压缩包是为了在各种Linux发行版上安装Erlang而准备...

    for_each_file 用erlang代码实现遍历文件

    在Erlang编程语言中,`for_each_file`是一个自定义函数,用于遍历指定目录下的所有文件,并对每个文件执行特定的操作。在这个场景中,它读取每个文件的内容,以行为单位处理每一行,将每一行作为一个列表元素,最后...

    erlang relx 文件

    relx erlang 下载cowboy 时要有到的文件,在国内下载有时有问题。

    Erlang OPT 20.3 window安装文件

    学习RabbitMQ,需要安装运行环境, Erlang的下载实在太慢,所以下载完成后,放在这里,供大家下载,这里windiow32安装文件, 如果需要64位的或者linux下的source 文件,参考我的其他上传

    erlang 24.0 龙芯 loongarch64 预编译版本

    在给定的标题“erlang 24.0 龙芯 loongarch64 预编译版本”中,我们可以看到这个软件包是为龙芯架构(LoongArch64)平台特别编译的Erlang 24.0版本。由于Erlang官方不直接提供针对龙芯处理器的二进制包,这意味着这...

    erlang_版本24.3.4.4

    5. **安装**:最后,使用`make install`将编译好的Erlang二进制文件安装到你的系统路径。在某些系统上,你可能需要管理员权限执行此操作。 Erlang的主要特性包括: - **并发性**:Erlang的进程模型是轻量级的,...

    Erlang Windows 64位 安装包

    对于网络较慢的情况,可以使用提供的esl-erlang_22.0_windows_amd64.exe文件。 2. 运行安装:找到下载的.exe文件,双击运行。跟随安装向导的提示进行操作,选择合适的安装路径,注意勾选添加Erlang到系统PATH选项,...

    erlang22最新下载包

    5. **并发与分布式系统支持**:Erlang以其轻量级进程和消息传递为基础的并发模型著名,新版本可能会加强这方面的能力,更好地支持分布式应用程序。 6. **编译器和工具链**:Erlang的编译器和构建工具可能也得到了...

    erlang9.rar

    标题中的"erlang9.rar"是一个压缩文件,包含了Erlang 9的Windows 64位安装程序。"otp_win64_20.0.exe"是实际的安装文件,这意味着尽管标题提到了Erlang9,但压缩包内提供的实际上是OTP的20.0版本。这可能是由于在...

    Erlang 20.3linux安装包

    "Erlang 20.3linux安装包"可能是一个为Linux系统设计的Erlang特定版本的安装包,它包含了所有必要的文件和库,以便在Linux上安装和运行Erlang 20.3。 安装Erlang的步骤一般如下: 1. **下载**:你可以从Erlang ...

Global site tag (gtag.js) - Google Analytics