读书人

Erlang 实践散文-2

发布时间: 2012-08-25 10:06:20 作者: rapoo

Erlang 实践杂记-2

二、测试代码运行时间

1、场景描述

????都说Erlang牛逼,高性能,但是执行效率真的很高吗?这个倒真不见得,感兴趣的,可以去测试下每行Erlang代码的运行时间,你会发现,Erlang的执行效率不见得比C或者是C++高。

2、API函数

tc(Module,?Function,?Arguments)?->?{Time,?Value}

Types:

Module?=?module()

Function?=?atom()

Arguments?=?[term()]

Time?=?integer()

In?microseconds

Value?=?term()

Evaluates?apply(Module,?Function,?Arguments)?and?measures?the?elapsed?real?time?as?reported?by?os:timestamp/0.?Returns?{Time,?Value},?where?Time?is?the?elapsed?real?time?in?microseconds,?and?Value?is?what?is?returned?from?the?apply.

3、实例

????-module(myring).

-export([start/1,?start_proc/2]).

start(Num)?->

start_proc(Num,?self()).

start_proc(0,?Pid)?->

Pid?!?ok;

start_proc(Num,?Pid)?->

? ? NPid?=?spawn(?MODULE,?start_proc,?[Num-1,?Pid]),

NPid?!?ok,

receive?ok?->?ok?end.

???运行过程

Eshell?V5.9.1??(abort?with?^G)

1>?c(myring).

{ok,myring}

2>?timer:tc(myring,?start,?1000000).??????????%%Arguments?=?[term()]

**?exception?error:?bad?argument

?????in?function??apply/3

????????called?as?apply(myring,start,1000000)

?????in?call?from?timer:tc/3?(timer.erl,?line?194)

3>?timer:tc(myring,?start,?[1000000]).

{2375954,ok}?????????????????????%%时间单位为?us

4>?

读书人网 >编程

热点推荐