As part of a series of end-to-end performance investigations (see #118, #119) I found that the embossc script is spawning a subprocess for the front-end step and then the back-end steps. This adds a small overhead of launching the subprocesses, but moreover requires serializing, piping between processes, and deserializing IR to an intermediate JSON representation.
For a larger emb a PoC showed a reduction of 16% overhead by removing the subprocesses. I'm proposing going from:
ir, _, errors = glue.parse_emboss_file(
flags.input_file[0], emboss_front_end._find_in_dirs_and_read(flags.import_dirs))
if not errors:
header, errors = header_generator.generate_header(ir)
As part of a series of end-to-end performance investigations (see #118, #119) I found that the
embossc
script is spawning a subprocess for the front-end step and then the back-end steps. This adds a small overhead of launching the subprocesses, but moreover requires serializing, piping between processes, and deserializing IR to an intermediate JSON representation.For a larger emb a PoC showed a reduction of 16% overhead by removing the subprocesses. I'm proposing going from:
to something like: