selection and performance
One of dillo's main advantages is it's incredible speed and efficiency, but somehow the selection code doesn't seem to keep up with this. it seems to have some scalability problem that makes it use excessive amounts of cpu when selecting large parts of complex pages (tables), and slows dillo down to a crawl even on my p3/750 (which dillo usually runs lightning fast on). to reproduce the problem, load: http://users.auriga.wearlab.de/~r00t/table.html (a table of 21x21 cells), and then try to select all cells by dragging from the top left to the lower right. cpu usage grows immensely, and near the end it slows down to a crawl. the script used to create the table (to avoid duplicate work if you need other test-cases): { echo '<html><body><table border=1>';for a in $(seq 0 20);do echo '<tr>'; for b in $(seq 0 20);do echo '<td>'"$a-$b"'</td>';done;echo '</tr>';done; echo '</table></body></html>';}>table.html if this is a known limitation, i'm sorry to bug you with it, but it seemed worth reporting. Greetings, Thorben Thuermer
Hi! On Thu, Apr 24, Thorben Thuermer wrote:
One of dillo's main advantages is it's incredible speed and efficiency, but somehow the selection code doesn't seem to keep up with this. it seems to have some scalability problem that makes it use excessive amounts of cpu when selecting large parts of complex pages (tables), and slows dillo down to a crawl even on my p3/750 (which dillo usually runs lightning fast on).
This problem is solved now; checkout the latest CVS and test it. For those interested: Before, the selection was, for every motion event, unhighlighted, and after setting the new one, highlighted again, which of course does not scale very well. In the beginning, I considered optimizing it by (un-)highlighting only the differences, but then saw that it does not seem to be neccessary. This assumtion was wrong, and so I implemented this optimization. Sebastian
On Thu, 1 May 2003 20:34:14 +0200 Sebastian Geerken <s.geerken@ping.de> wrote:
Hi!
On Thu, Apr 24, Thorben Thuermer wrote:
One of dillo's main advantages is it's incredible speed and efficiency, but somehow the selection code doesn't seem to keep up with this. it seems to have some scalability problem that makes it use excessive amounts of cpu when selecting large parts of complex pages (tables), and slows dillo down to a crawl even on my p3/750 (which dillo usually runs lightning fast on).
This problem is solved now; checkout the latest CVS and test it.
[...] Thanks for the quick fix (and for this great addition to dillo in general)! now the only case where dillo used more CPU than mozilla is fixed again... only that the new code also seems to have new bugs :( after a few seconds of wildly dragging the selection around my table, i get: (on a current (sunday morning) cvs checkout) Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 16384 (LWP 10522)] 0x08058366 in a_Dw_ext_iterator_compare (eit1=0x0, eit2=0x0) at dw_ext_iterator.c:334 334 while (eit1->stack[nea]->widget == eit2->stack[nea]->widget) { (gdb)
Sebastian
Thorben
participants (2)
-
Sebastian Geerken
-
Thorben Thuermer