In general I do not yet have anything decisive to say about the
difference in efficiency of Shieber's generator and BUG.
However there are a few reasons that suggest that my implementation
is more efficient than Shieber's.
First, BUG uses a top-down oracle.
Therefore the generation process seems more goal directed.
Instead Shieber uses a top-down test to destroy search paths
afterwards.
Second, BUG uses unification almost everywhere, whereas
Shieber's generator often needs to check for subsumption.
At least within Prolog unification allows more efficient
implementations than subsumption.
Therefore this may lead to a speed advantage of BUG.
A third advantage is obtained by the delay of choosing between
inflectional variants of words (including the empty semantic head
in case of verb second). This reduces a lot of nondeterminism.
In Shieber's system this reduction of local ambiguity does not
exist.
However, probably this same strategy can be incorporated within
Shieber's framework without serious modifications.