improved performance of RelativeFre in compilation

This commit is contained in:
aarne
2006-05-11 21:58:39 +00:00
parent a90dbdd2c5
commit 1d56ffbd5a
3 changed files with 55 additions and 13 deletions

36
lib/resource-1.0/log.txt Normal file
View File

@@ -0,0 +1,36 @@
11/5/2006
LangFre
373m, 55s, RelativeFre.gfc 43k
Just ag in RelVP:
120m, 40s, 38k
agr,bool instead of ragr:
319m, 52s, 42k
move outside table the case of bool:
221m , 45s, 50k
move outside whole record
213m, 46s, 49k CHOSEN 11/5
let-defined ag -> ag outside record
275m, 52s, 42m
let-defined ag outermost in branch
284m, 51s, 44m
ragr, outside record
487m, 62s, 76m
UseRCl TFut ASimul PPos (RelSlash IdRP (AdvSlash (SlashPrep (GenericCl (ComplV2A paint_V2A (UsePN paris_PN) (PositA full_A))) before_Prep) everywhere_Adv))

View File

@@ -32,7 +32,7 @@ incomplete concrete CatRomance of Cat =
-- Relative
RCl = {s : Agr => Tense => Anteriority => Polarity => Mood => Str} ;
RP = {s : Bool => AAgr => Case => Str ; a : RAgr} ;
RP = {s : Bool => AAgr => Case => Str ; a : AAgr ; hasAgr : Bool} ;
-- Verb

View File

@@ -9,29 +9,35 @@ incomplete concrete RelativeRomance of Relative =
s = \\ag,t,a,p,m => pronSuch ! ag ++ conjThat ++ cl.s ! t ! a ! p ! m
} ;
RelVP rp vp = {
s = \\ag =>
(mkClause
(rp.s ! False ! {g = ag.g ; n = ag.n} ! Nom)
(case rp.a of {
RNoAg => ag ;
RAg a => a ** {p = P3}
})
vp).s
--- more efficient to compile than case inside mkClause; see log.txt
RelVP rp vp = case rp.hasAgr of {
True => {s = \\ag =>
(mkClause
(rp.s ! False ! {g = ag.g ; n = ag.n} ! Nom)
{g = rp.a.g ; n = rp.a.n ; p = P3}
vp).s} ;
False => {s = \\ag =>
(mkClause
(rp.s ! False ! {g = ag.g ; n = ag.n} ! Nom)
ag
vp).s
}
} ;
RelSlash rp slash = {
s = \\ag,t,a,p,m =>
slash.c2.s ++ rp.s ! False ! ag ! slash.c2.c ++ slash.s ! t ! a ! p ! m
slash.c2.s ++ rp.s ! False ! {g = ag.g ; n = ag.n} ! slash.c2.c ++ slash.s ! t ! a ! p ! m
} ;
FunRP p np rp = {
s = \\_,a,c => np.s ! Ton Nom ++ p.s ++ rp.s ! True ! a ! p.c ;
a = RAg {g = np.a.g ; n = np.a.n}
a = {g = np.a.g ; n = np.a.n} ;
hasAgr = True
} ;
IdRP = {
s = relPron ;
a = RNoAg
a = {g = Masc ; n = Sg} ;
hasAgr = False
} ;
}