On 20/02/13 15:07, Victor Vasiliev wrote: > On 02/19/2013 06:21 PM, Tim Starling wrote: >> The Wiktionary folk are gnashing their teeth today when they >> discovered that in fact, loading a 742KB module 1200 times in a single >> page does in fact take a long time, and it trips the CPU limit after >> about 450 invocations . So, sorry for raising expectations about that. >> >> -- Tim Starling >> > > Aren't modules which are already loaded cached, so if they load it 1200 > times on a single page, how does it manage to affect CPU time that badly?
Execution of the module chunk seems to be the main reason. I benchmarked it locally at 10.6ms, so 450 of those would be 4.8s. Lua has a lot of O(N) work to do when a large table literal is executed. I'm experimenting with using large string literals instead: <https://en.wiktionary.org/w/index.php?title=Module:Languages_string_db&action=edit> That module takes about 2us for module chunk execution, when I run it locally, and around 30us for each lookup in a tight loop on the server side. But when I use it in a large article, it seems to use about 1.4ms per #invoke, so maybe there's still some overhead that needs to be tracked down. The idea of storing a database in a large string literal could be made to be fairly efficient and user-friendly if a helper module was written to do parsing and a binary search. -- Tim Starling _______________________________________________ Wikitech-l mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/wikitech-l
