Tag is pushed to master branch, waiting for Bombe or toad to release it.

- Major optimization: With older WOT builds, where X/Y are identities,
executing "get Trust from X to Y" and "get Score from X to Y" would
run in average case O(N) execution time where N is the number of
trust/score objects in the database. Theoretically, such queries
should execute in O(1) with adequate indexes. The poor execution time
with the old code is due to the lack of multi-dimensional indexes in
db4o and has been proven experimentally by writing a test which I
will publish in my (xor) flog soon. This new build generates composite
primary keys for Trust and Score objects and configures db4o to
generate an index upon them. This allows a theoretical execution time
of said queries of O(1). The real time will probably be O(log(N))
because db4o uses trees, but thats WAY better than O(N). The said
queries are used heavily during score computation, which is executed
every time a trust list is imported or a trust value is changed. The
performance gain should be significant since this is an algorithmical
optimization, not an implementation-one.
- Major optimization: When creating own identities, do not
incrementally compute scores, but run a full computation. This should
speed up own identity creation very much. ATTENTION: When benchmarking
this, be careful though: If there was no own identity before, the
creation of one will result in the fetching of very many trust lists,
because trust lists are not fetched if nobody trusts the seed
identities. And the fetching of many trust lists causes heavy
computation, so this optimization does not help. So to benchmark this
properly, make sure that you have an own identity already. Also, if
your existing own identity had distrusted many identities which were
initially trusted from the seeds, the creation of a new identity which
trusts the seed identities could cause lots of trust list fetching as
well, since many distrusted identities might become trusted. And make
sure the WOT database is "up to date" before starting it for a
benchmark, i.e. WOT has been running long enough before to make sure
that no new trust lists will be fetched. 
- Major optimization: Defragment WOT database during startup.
- Add statistics about the number of score computations and their
execution time to the home page of WOT. 
- ArneBab: Add util to generate random nicknames for identities, to
improve your anonymity. Accessible via FCP and when creating own
identities via the web interface. Thanks!

Internal stuff:
- New internal function for creating a fresh clone of a database: It
will manually re-create all objects in a fresh database. Sometimes
db4o databases have internal breakage which prevents defragmentation
from succeeding, while the databases still can be used with WOT
without any problems. This new function allows affected developers to
create a fresh copy of their database. Maybe someday we can add UI so
everyone can use it
- Bug fix: Prevent the creation or import of identities which have
mixed up insert and request URIs. When a database is first opened
which contains such identities, they are deleted if they are NON-own
identities, which fixes lots of ERROR logging. If they are own
identities, nothing will be done: We could theoretically repair them
by switching the URIs, BUT those identities probably have already
published their insert URIs by solving captchas, so they are to be
considered as compromised. Hopefully, the people who own those
identities will notice that they are broken (they won't insert and
errors are logged) and delete them. We do not auto delete them because
auto-deleting user-owned content is bad.
- Zidel: Build process improvement, additional work on the
insert/request URI mixup bug. Thanks!
- Add some logging, for example for the timings of score computation.
- Various internal bugfixes

Reply via email to