Yes, certainly. That would save a lot more, since it wouldn't have to
read in and write out the data as XML. But these are general purpose
utilities that other people are going to combine in unpredictable
ways.
I was thinking of having the combined program do exactly what the
individual programs do now, which would only save the overhead of
program startup, but if the "sub-programs" can save time by passing
data to each other internally rather than by parsing and generating
XML, that's even better.
Maybe the single monolithic program could define a scripting
interface, allowing users to perform multiple operations without
ever leaving the program. Of course an invocation of any of your
existing programs could be replaced by a trivial script that just
performs one operation, perhaps specified on the command line.
(As an added bonus, and to get back to the topic of this thread,
you could probably get better profiling information using a script
that specifies doing the same action, say, 100 times.)
I don't know enough about what you're doing to know whether this
makes any sense.