start => pootle

## Pootle performance

This is about performance issues in Pootle, and a plan to look into them / address them...

### Aspects to consider

1. disk / memory / processing time
2. concurrency of processing
3. distribution across servers

### Possible immediate wins

- backgrounding tasks
- needs queue so things needed can be brought to front... (queue for files needing stats, if you need stats on a file push it up to the top / do it in own thread)

### Areas to Benchmark

- Parsing PO files
- Creating Lucene indexes
- Analyzing stats on PO files
- Reindexing / altering some entries in a file
- Overall initial startup

{Friedel sê: Page generation for a big directory (like openoffice)}

### Ideas

- May be helpful to look at locking requirements for concurrent processes (e.g. Apache) at the same time, as separating out the API so its clear whats happening may make it easier to benchmark / improve
- If the templates directory is indexed, it can form the starting index for a new language that is created from the template PO’s.

### Achieved so far

- Simple benchmark program (`benchmark.py`) that mostly measures the areas above that happen on first-time launch, outputs profiler info
- Reduced startup time to 1/4 what it was before by optimising often-used code (low-level string functions used by parsing / index analysis code, and stats helper functions were main target)

### Locking and Distribution

see locking