~ubuntu-branches/ubuntu/trusty/erlang/trusty

« back to all changes in this revision

Viewing changes to system/doc/efficiency_guide/call_bm.erl

  • Committer: Bazaar Package Importer
  • Author(s): Clint Byrum
  • Date: 2011-05-05 15:48:43 UTC
  • mfrom: (3.5.13 sid)
  • Revision ID: james.westby@ubuntu.com-20110505154843-0om6ekzg6m7ugj27
Tags: 1:14.b.2-dfsg-3ubuntu1
* Merge from debian unstable.  Remaining changes:
  - Drop libwxgtk2.8-dev build dependency. Wx isn't in main, and not
    supposed to.
  - Drop erlang-wx binary.
  - Drop erlang-wx dependency from -megaco, -common-test, and -reltool, they
    do not really need wx. Also drop it from -debugger; the GUI needs wx,
    but it apparently has CLI bits as well, and is also needed by -megaco,
    so let's keep the package for now.
  - debian/patches/series: Do what I meant, and enable build-options.patch
    instead.
* Additional changes:
  - Drop erlang-wx from -et
* Dropped Changes:
  - patches/pcre-crash.patch: CVE-2008-2371: outer level option with
    alternatives caused crash. (Applied Upstream)
  - fix for ssl certificate verification in newSSL: 
    ssl_cacertfile_fix.patch (Applied Upstream)
  - debian/patches/series: Enable native.patch again, to get stripped beam
    files and reduce the package size again. (build-options is what
    actually accomplished this)
  - Remove build-options.patch on advice from upstream and because it caused
    odd build failures.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
%% ``The contents of this file are subject to the Erlang Public License,
 
2
%% Version 1.1, (the "License"); you may not use this file except in
 
3
%% compliance with the License. You should have received a copy of the
 
4
%% Erlang Public License along with this software. If not, it can be
 
5
%% retrieved via the world wide web at http://www.erlang.org/.
 
6
%% 
 
7
%% Software distributed under the License is distributed on an "AS IS"
 
8
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
 
9
%% the License for the specific language governing rights and limitations
 
10
%% under the License.
 
11
%% 
 
12
%% The Initial Developer of the Original Code is Ericsson Utvecklings AB.
 
13
%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
 
14
%% AB. All Rights Reserved.''
 
15
%% 
 
16
%%     $Id$
 
17
%%
 
18
 
 
19
-module(call_bm).
 
20
 
 
21
-include("bench.hrl").
 
22
 
 
23
-export([benchmarks/0]).
 
24
-export([local_call/1,external_call/1,fun_call/1,apply_fun/1,
 
25
         apply_mfa_implicit/1, apply_mfa_explicit/1]).
 
26
-export([foo/0]).
 
27
 
 
28
benchmarks() ->
 
29
    {400000,[local_call,external_call,fun_call,apply_fun,
 
30
             apply_mfa_implicit, apply_mfa_explicit]}.
 
31
 
 
32
local_call(0) ->
 
33
    ok;
 
34
local_call(Iter) ->
 
35
    ?rep40(foo()),
 
36
    local_call(Iter-1).
 
37
 
 
38
external_call(0) ->
 
39
    ok;
 
40
external_call(Iter) ->
 
41
    ?rep40(?MODULE:foo()),
 
42
    external_call(Iter-1).
 
43
 
 
44
fun_call(Iter) ->
 
45
    fun_call(Iter, fun() -> ok end).
 
46
fun_call(0, _) ->
 
47
    ok;
 
48
fun_call(Iter, Fun) ->
 
49
    ?rep40(Fun()),
 
50
    fun_call(Iter-1, Fun).
 
51
 
 
52
apply_fun(Iter) ->
 
53
    apply_fun(Iter, fun() -> ok end).
 
54
apply_fun(0, _) ->
 
55
    ok;
 
56
apply_fun(Iter, Fun) ->
 
57
    ?rep40(apply(Fun, [])),
 
58
    apply_fun(Iter-1, Fun).
 
59
 
 
60
apply_mfa_explicit(0) ->
 
61
    ok;
 
62
apply_mfa_explicit(Iter) ->
 
63
    ?rep40(apply(?MODULE, foo, [])),
 
64
    apply_mfa_explicit(Iter-1).
 
65
 
 
66
apply_mfa_implicit(Iter) ->
 
67
    apply_mfa_implicit(?MODULE, foo, Iter).
 
68
 
 
69
apply_mfa_implicit(_, _, 0) ->
 
70
    ok;
 
71
apply_mfa_implicit(Module, Function, Iter) ->
 
72
    ?rep40(Module:Function()),
 
73
    apply_mfa_implicit(Module, Function, Iter-1).
 
74
 
 
75
foo() -> ok.