[erlang-questions] Better use of io:format and io_lib:format

Bernardo Alvez <>
Fri Oct 2 00:12:49 CEST 2009


Thanks Michael!

BR,
Bernardo

Michael Richter escribió:
> You could try an experiment, maybe?
>
> File: "output":
>
> #! /usr/bin/env escript
> %% -mode(compile).
>
> main(["list"]) ->
>     M1 = erlang:process_info(self(), memory),
>     T1 = erlang:now(),
>     list_loop(500),
>     T2 = erlang:now(),
>     M2 = erlang:process_info(self(), memory),
>     io:format("~n~n~w , ~w , ~w~n~n", [M1, M2, timer:now_diff(T2,T1)]);
>
> main(["binary"]) ->
>     M1 = erlang:process_info(self(), memory),
>     T1 = erlang:now(),
>     binary_loop(500),
>     T2 = erlang:now(),
>     M2 = erlang:process_info(self(), memory),
>     io:format("~w , ~w , ~w~n", [M1, M2, timer:now_diff(T2,T1)]);
>
> main(_) ->
>     io:format("Try again.~n").
>
> list_loop(0) ->
>     io:format("Done!~n~n");
>
> list_loop(N) ->
>     io:format("hello ~s", ["world"]),
>     list_loop(N-1).
>
> binary_loop(0) ->
>     io:format(<<"Done!~n~n">>);
>
> binary_loop(N) ->
>     io:format(<<"hello ~s">>, [<<"world">>]),
>     binary_loop(N-1).
>
> Result set from several runs of "clear ; ./output list":
>
>    - {memory,54492} , {memory,33820} , 104308
>    - {memory,54492} , {memory,33820} , 103686
>    - {memory,54492} , {memory,33820} , 100892
>    - {memory,54492} , {memory,33820} , 87483
>    - {memory,54492} , {memory,33820} , 99644
>
> Result set from several runs of "clear ; ./output binary":
>
>    - {memory,44156} , {memory,33820} , 94222
>    - {memory,44156} , {memory,33820} , 110587
>    - {memory,44156} , {memory,33820} , 115329
>    - {memory,44156} , {memory,33820} , 111326
>    - {memory,44156} , {memory,33820} , 102580
>
> I make no representation that my code is any good (indeed it's the
> opposite), but a brief eyeball of the results shows that binaries use up a
> little less memory and a little more CPU.  I'm certain the other, better
> Erlang users can give you better benchmarking code to answer your question
> (but so can you, and your benchmarking code would reflect your intended
> use).
>
> 2009/10/1 Bernardo Alvez <>
>
>   
>> Hi all,
>>
>> Which  of the following is better to use in terms of performance and
>> resources usage?:
>>
>> io:format("hello ~s", ["world"]).
>> or
>> io:format(<<"hello ~s">>, [<<"world">>]).
>>
>> Thanks,
>> Bernardo
>>
>> ________________________________________________________________
>> erlang-questions mailing list. See http://www.erlang.org/faq.html
>> erlang-questions (at) erlang.org
>>
>>
>>     
>
>   


More information about the erlang-questions mailing list