On my machine, which hasn't the R12B improvements, I'm getting the same <br>results than you. <br>But after a little rewrite, things go better:<br><br>2> timer_avg:tc(act,parse,["test.txt"],1000).<br>Max: 26200<br>
Min: 3066<br>Avg: 3853.10<br>ok<br>3> timer_avg:tc(act_2,parse,["test.txt"],1000).<br>Max: 28206<br>Min: 5495<br>Avg: 5968.27<br>ok<br>4> timer_avg:tc(act_3,parse,["test.txt"],1000).<br>Max: 19227<br>
Min: 3045<br>Avg: 3215.01<br>ok<br><br>the code I used for act_3 is like this:<br><br>parse(Bin) when is_binary(Bin) -><br>        parse(Bin, 0,[], []).<br>        <br><br>parse(Bin,CurrentOffset,CurrentLine,Lines) -><br>
    case Bin of<br>        <<Field:CurrentOffset/binary, $\,,Rest/binary>> -><br>            parse(Rest,0,[Field|CurrentLine],Lines);<br>        <<Field:CurrentOffset/binary,$\n,Rest/binary>> -><br>
            parse(Rest,0,[],[lists:reverse([Field|CurrentLine])|Lines]);<br>        <<_Field:CurrentOffset/binary,_Char,_Rest/binary>> -><br>            parse(Bin,CurrentOffset+1,CurrentLine,Lines);<br>        <<>> -><br>
            {ok,lists:reverse(Lines)};<br>        _ -><br>            {error,bad_file}<br>    end.<br><br>explicitly keep track of the current offset to avoid copying binaries on each <br>append.<br><br>I think that on newer erlang releases, the performance of act_2 should be similar, but I don't <br>
have it installed here to test. See comments on <br><a href="http://www.erlang.org/pipermail/erlang-questions/2008-June/036166.html">http://www.erlang.org/pipermail/erlang-questions/2008-June/036166.html</a><br><br><div class="gmail_quote">
2008/6/26 litao cheng <<a href="mailto:litaocheng@gmail.com">litaocheng@gmail.com</a>>:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
yes, I retry the test like you say.<br>the result is same.<br>thank you!<br><br><div class="gmail_quote">2008/6/26 Vlad Dumitrescu <<a href="mailto:vladdu55@gmail.com" target="_blank">vladdu55@gmail.com</a>>:<div><div>
</div><div class="Wj3C7c"><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi<br><br><div class="gmail_quote">2008/6/26 litao cheng <<a href="mailto:litaocheng@gmail.com" target="_blank">litaocheng@gmail.com</a>>:<div><div></div><div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">


I had read joel's article:Parsing text and binary files with Erlang. In the article, the author show how to parse a comma-delimited text file. <br>I write the code for practice, the module source is act.erl.  By the way, I see in the bottom of joel' article, a buddy give a comment, he says, he use binary to instead of some list, It seems so efficient, so I write the second code, it's act_2.erl.<br>



<br>Finally,  I want to test how much the act_2 faster than act. So suprise, In my Compute, The result is :<br>96> timer_avg:tc(act, parse, ["test.txt"], 100).<br>Max: 15991<br>Min: 1<br>Avg: 2339.05<br><br>


100> timer_avg:tc(act_2, parse, ["test.txt"], 100).<br>
Max: 15997<br>Min: 1<br>Avg: 4839.03<br><br>the timer_avg is a moudule  evaluates <span>apply(Module, Function, Arguments)</span> N times and measures
the elapsed real time, about Max, Min, Avg. (use timer:tc/3).<br><br>who will give me some explain?<br></blockquote></div></div></div><br>You might want to retry the tests, starting them instead with<br>spawn(timer_avg, tc, [act, parse, ["test.txt"], 100]).<br>



spawn(timer_avg, tc, [act_2, parse, ["test.txt"], 100]).<br>
<br>This way you don't get any random garbage collections to interfere.<br><br>regards,<br><font color="#888888">Vlad<br>
</font></blockquote></div></div></div><br>
<br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://www.erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://www.erlang.org/mailman/listinfo/erlang-questions</a><br></blockquote></div><br><br clear="all"><br>-- <br>--<br>pablo <br><a href="http://ppolv.wordpress.com">http://ppolv.wordpress.com</a><br>
----