lojban MOO Performance

From Lojban
Jump to navigation Jump to search

mooix is not terribly high-performance, and the machine it's

currently running on is fully encrypted, which Doesn't Help (tm).

Here are some notes and ideas about how to make things better:

Improvement Suggestions

Faster hybrid daddy: have markers like Eimi's untagged special in

the main source tree; users can insert them themselves if they want,

but they don't have too, but not having to go all they way up the

tree saves time.

session, $avatar, $direct_object and $this flags (and any

similar things that may exist) are not shortcutted in msg.c; that

is, propigate is run all the way through, even though (presumably)

finding the targets for a message with those flags requires no

propigation. I suspect this to be fairly serious.

Performance suggestion: Per-user flag to select from the following:

1. Daddy Tag

2. Own language always.

3. Daddy Tag with own language.

  1. 2 being much, much cheaper.

There must be *something* that can be done to make nearbyobjs

faster. Caching it and watching for changes is one possibility;

test mod time on the location's contents? Enh.

Rather larger scale idea:

We could have a layer in the language bindings that caches results

for 1 second (unless told not to).

Dunno if this would be faster than a RAM disk on a real box.

Might be better done on the parser; probably the most savings there.

Benchmarking Results

All these are from "look" in Robin's MUD Workshop by m-test (i.e. an English

user).

Before the conversion from XML to .lang:

~pp~

preprocessing took 0.000101 secs (0.000101) secs total)

nearbyobs took 0.477296 secs (0.477397) secs total)

prepping parser took 0.740027 secs (1.217424) secs total)

generating adjectives took 0.000580 secs (1.218004) secs total)

building nouns took 0.000693 secs (1.218697) secs total)

resetting took 0.000334 secs (1.219031) secs total)

gathering info took 0.000142 secs (1.219173) secs total)

parsing took 0.071015 secs (1.290188) secs total)

prepping command took 0.545593 secs (1.835781) secs total)

running command took 0.287330 secs (2.123111) secs total)

~/pp~

After the conversion from XML to lang:

~pp~

preprocessing took 0.000113 secs -- (0.000113 secs total)

nearbyobs took 0.559789 secs -- (0.559902 secs total)

prepparser step 1 took 0.000686 secs -- (0.560588 secs total)

prepparser step 2 took 0.491008 secs -- (1.051596 secs total)

prepping parser took 0.000177 secs -- (1.051773 secs total)

generating adjectives took 0.000161 secs -- (1.051934 secs total)

building nouns took 0.000573 secs -- (1.052507 secs total)

resetting took 0.000056 secs -- (1.052563 secs total)

gathering info took 0.000031 secs -- (1.052594 secs total)

parsing took 0.069660 secs -- (1.122254 secs total)

prepping command part 0 took 0.000256 secs -- (1.122510 secs total)

prepping command part 1 took 0.003496 secs -- (1.126006 secs total)

prepping command part 2 took 0.001439 secs -- (1.127445 secs total)

prepping command part 2 took 0.000086 secs -- (1.127531 secs total)

prepping command part 3 took 0.000463 secs -- (1.127994 secs total)

prepping command part 4 took 0.000054 secs -- (1.128048 secs total)

prepping command part 5 took 0.000029 secs -- (1.128077 secs total)

prepping command part 6 took 0.000027 secs -- (1.128104 secs total)

prepping command part 7 took 0.000048 secs -- (1.128152 secs total)

prepping command took 0.000119 secs -- (1.128271 secs total)

running command part 1 took 0.000540 secs -- (1.128811 secs total)

running command part 2 took 0.147447 secs -- (1.276258 secs total)

prepping command part 0 took 0.000544 secs -- (1.276802 secs total)

prepping command part 1 took 0.001895 secs -- (1.278697 secs total)

prepping command part 2 took 0.000417 secs -- (1.279114 secs total)

prepping command part 0 took 0.000177 secs -- (1.279291 secs total)

prepping command part 1 took 0.002491 secs -- (1.281782 secs total)

prepping command part 2 took 0.000376 secs -- (1.282158 secs total)

prepping command part 0 took 0.000177 secs -- (1.282335 secs total)

prepping command part 1 took 0.001084 secs -- (1.283419 secs total)

prepping command part 2 took 0.000348 secs -- (1.283767 secs total)

prepping command part 2 took 0.000141 secs -- (1.283908 secs total)

prepping command part 3 took 0.000695 secs -- (1.284603 secs total)

prepping command part 4 took 0.000257 secs -- (1.284860 secs total)

prepping command part 5 took 0.000467 secs -- (1.285327 secs total)

prepping command part 6 took 0.000034 secs -- (1.285361 secs total)

prepping command part 7 took 0.000582 secs -- (1.285943 secs total)

prepping command took 0.000151 secs -- (1.286094 secs total)

running command part 1 took 0.000813 secs -- (1.286907 secs total)

running command took 0.483902 secs -- (1.770809 secs total)

~/pp~