erlang/otp — pull request #78 by shino (2013-09-19 06:47:12+00:00)
Title: Utilize exported function information to avoid undef thrown

When `xmerl:export_simple/2,3` is called with callback `xmerl_xml`, it throws many `undef` at https://github.com/erlang/otp/blob/589a9ed126d205007e79c22053d1b156a383d99f/lib/xmerl/src/xmerl.erl#L310 .
By avoiding it, execution can be faster.

For example, elapsed time to export XML of one node with 1000 child elements are

Before: 7msec
```
> Xml = [{ham, [], lists:duplicate(1000, {eggs, [], ["bacon"]})}].
> timer:tc(fun() -> lists:foreach(fun(_) -> xmerl:export_simple(Xml, xmerl_xml) end,
lists:seq(1,1000)) end).
{7043822,ok}
```

After: 1.3 msec/call
```
> Xml = [{ham, [], lists:duplicate(1000, {eggs, [], ["bacon"]})}].
> timer:tc(fun() -> lists:foreach(fun(_) -> xmerl:export_simple(Xml, xmerl_xml) end,
lists:seq(1,1000)) end).
{1314278,ok}
```