Parcourir la source

Added timing information to word_split.

Paul Downen il y a 13 ans
Parent
commit
89ea678611
1 fichiers modifiés avec 21 ajouts et 8 suppressions
  1. 21 8
      src/word_split.erl

+ 21 - 8
src/word_split.erl

@@ -25,13 +25,26 @@ maybe_word(S) ->
     singleton(S).
 
 process_char(C) ->
-    case lists:member(C, " \t\n\f\l") of
-	true ->
-	    {segment, "", nil(), ""};
-	false ->
-	    {chunk, [C]}
-    end.
+    io:format("~p: process_char start~n", [node()]),
+    {_, _, Start} = erlang:now(),
+    Result = case lists:member(C, " \t\n\f\l") of
+		 true ->
+		     {segment, "", nil(), ""};
+		 false ->
+		     {chunk, [C]}
+	     end,
+    {_, _, Finish} = erlang:now(),
+    io:format("~p: process_char finish, time ~p~n", [node(), Finish-Start]),
+    Result.
 
+combine_timed(Arg1, Arg2) ->
+    io:format("~p: combine start~n", [node()]),
+    {_, _, Start} = erlang:now(),
+    Result = combine(Arg1, Arg2),
+    {_, _, Finish} = erlang:now(),
+    io:format("~p: combine finish, time ~p~n", [node(), Finish-Start]),
+    Result.
+    
 combine({chunk, S1}, {chunk, S2}) ->
     {chunk, S1 ++ S2};
 combine({chunk, S}, {segment, L, C, R}) ->
@@ -42,8 +55,8 @@ combine({segment, L1, C1, R1}, {segment, L2, C2, R2}) ->
     {segment, L1, conc(C1, conc(maybe_word(R1 ++ L2), C2)), R2}.
 
 words(Str) ->
-    T = ebb_flow:map_reduce(fun process_char/1,
-			    fun(X, Y) -> combine(X, Y) end,
+    T = ebb_flow:map_reduce(fun(X) -> process_char(X) end,
+			    fun(X, Y) -> combine_timed(X, Y) end,
 			    Str),
     case ebb_run:run_distributed(T) of
 	{ok, [{chunk, S}]} ->