[erlang-questions] Better use of io:format and io_lib:format
Bernardo Alvez
manprog@REDACTED
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 <manprog@REDACTED>
>
>
>> 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