killTrigger(tempID) takes a while and variates with time

Bug #1192144 reported by Vadim Peretokin
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mudlet
Fix Released
Undecided
Unassigned

Bug Description

It's been observed[http://forums.mudlet.org/posting.php?mode=reply&f=7&t=3481#pr17189] that killTrigger is not very quick when used in conjunction with a massive set of triggers.

Attached is a test case that demonstrates this with real-life data from a name highlighter. tempTrigger() performs *amazingly*, getting the job done in a hundredth of a second. killTrigger() on the other hand takes 40+s, variating each time, to do its job:

Run 1:
Creating 12275 triggers took 0.094 seconds.
Deleting 12275 triggers took 46.673 seconds.

Run 2:
Creating 12275 triggers took 0.095 seconds.
Deleting 12275 triggers took 100.652 seconds.

Run 3:
Creating 12275 triggers took 0.104 seconds.
Deleting 12275 triggers took 43.425 seconds.

<restarted Mudlet>

Run 4:
Creating 12275 triggers took 0.103 seconds.
Deleting 12275 triggers took 3.54 seconds.

Run 5:
Creating 12275 triggers took 0.11 seconds.
Deleting 12275 triggers took 26.46 seconds.

Run 6:
Creating 12275 triggers took 0.137 seconds.
Deleting 12275 triggers took 55.442 seconds.

Run 7:
Mudlet actually crashed with:
ASSERT: "uint(i) < uint(size())" in file /usr/include/qt4/QtCore/qstring.h, line 699
Aborted (core dumped)

<restart>
Run 1:
Creating 12275 triggers took 0.097 seconds.
Deleting 12275 triggers took 4.357 seconds.

Run 2:
Creating 12275 triggers took 0.107 seconds.
Deleting 12275 triggers took 27.756 seconds.

Run 3:
Creating 12275 triggers took 0.122 seconds.
Deleting 12275 triggers took 53.483 seconds.

Run 4:
Creating 12275 triggers took 0.137 seconds.
Deleting 12275 triggers took 80.101 seconds.

Run 5:
Creating 12275 triggers took 0.101 seconds.
Deleting 12275 triggers took 106.571 seconds.

Run 6:
Creating 12275 triggers took 0.163 seconds.
Deleting 12275 triggers took 135.803 seconds.

Run 7:
Creating 12275 triggers took 0.094 seconds.
Deleting 12275 triggers took 157.775 seconds.

Run 8:
Creating 12275 triggers took 0.083 seconds.
Deleting 12275 triggers took 177.296 seconds.

Run 9:
Creating 12275 triggers took 0.133 seconds.
Deleting 12275 triggers took 207.396 seconds.

Run 10:
Creating 12275 triggers took 0.199 seconds.
Deleting 12275 triggers took 232.67 seconds.

I'll note that the statistics window reports the triggers just being... disabled, it seems. Here is what it says after these runs:
triggers current total: 122871
trigger patterns total: 122927
tempTriggers current total: 122750
active triggers: 116

This is using latest git.

Revision history for this message
Vadim Peretokin (vperetokin) wrote :
Revision history for this message
Heiko (koehnheiko) wrote : Re: [Mudlet-makers] [Bug 1192144] [NEW] killTrigger(tempID) takes a while and variates with time
Download full text (3.2 KiB)

added faster deletion speed is now about 1.2s using the example script
Note that trigs are actually deleted after new text has arrived. there's
no other way to do it because killTrigger() can be used in trigger
scripts. Consquently, repeated calls via alias without any server input
will grow the number of triggers until new text arrives from the game.

Am 18.06.2013 13:59, schrieb Vadim Peretokin:
> Public bug reported:
>
> It's been
> observed[http://forums.mudlet.org/posting.php?mode=reply&f=7&t=3481#pr17189]
> that killTrigger is not very quick when used in conjunction with a
> massive set of triggers.
>
> Attached is a test case that demonstrates this with real-life data from
> a name highlighter. tempTrigger() performs *amazingly*, getting the job
> done in a hundredth of a second. killTrigger() on the other hand takes
> 40+s, variating each time, to do its job:
>
>
> Run 1:
> Creating 12275 triggers took 0.094 seconds.
> Deleting 12275 triggers took 46.673 seconds.
>
> Run 2:
> Creating 12275 triggers took 0.095 seconds.
> Deleting 12275 triggers took 100.652 seconds.
>
> Run 3:
> Creating 12275 triggers took 0.104 seconds.
> Deleting 12275 triggers took 43.425 seconds.
>
> <restarted Mudlet>
>
> Run 4:
> Creating 12275 triggers took 0.103 seconds.
> Deleting 12275 triggers took 3.54 seconds.
>
> Run 5:
> Creating 12275 triggers took 0.11 seconds.
> Deleting 12275 triggers took 26.46 seconds.
>
> Run 6:
> Creating 12275 triggers took 0.137 seconds.
> Deleting 12275 triggers took 55.442 seconds.
>
> Run 7:
> Mudlet actually crashed with:
> ASSERT: "uint(i) < uint(size())" in file /usr/include/qt4/QtCore/qstring.h, line 699
> Aborted (core dumped)
>
> <restart>
> Run 1:
> Creating 12275 triggers took 0.097 seconds.
> Deleting 12275 triggers took 4.357 seconds.
>
> Run 2:
> Creating 12275 triggers took 0.107 seconds.
> Deleting 12275 triggers took 27.756 seconds.
>
> Run 3:
> Creating 12275 triggers took 0.122 seconds.
> Deleting 12275 triggers took 53.483 seconds.
>
> Run 4:
> Creating 12275 triggers took 0.137 seconds.
> Deleting 12275 triggers took 80.101 seconds.
>
> Run 5:
> Creating 12275 triggers took 0.101 seconds.
> Deleting 12275 triggers took 106.571 seconds.
>
> Run 6:
> Creating 12275 triggers took 0.163 seconds.
> Deleting 12275 triggers took 135.803 seconds.
>
> Run 7:
> Creating 12275 triggers took 0.094 seconds.
> Deleting 12275 triggers took 157.775 seconds.
>
> Run 8:
> Creating 12275 triggers took 0.083 seconds.
> Deleting 12275 triggers took 177.296 seconds.
>
> Run 9:
> Creating 12275 triggers took 0.133 seconds.
> Deleting 12275 triggers took 207.396 seconds.
>
> Run 10:
> Creating 12275 triggers took 0.199 seconds.
> Deleting 12275 triggers took 232.67 seconds.
>
> I'll note that the statistics window reports the triggers just being... disabled, it seems. Here is what it says after these runs:
> triggers current total: 122871
> trigger patterns total: 122927
> tempTriggers current total: 122750
> active triggers: 116
>
> This is using latest git.
>
> ** Affects: mudlet
> Importance: Undecided
> Status: New
>
> ** Attachment added: "killTrigger speed.xml"
> https://bugs.launchpad.net/bugs/11921...

Read more...

Revision history for this message
Vadim Peretokin (vperetokin) wrote :

Subsequent tests had the following numbers:

Creating 12275 triggers took 0.11 seconds.
Deleting 12275 triggers took 254.791 seconds.
Creating 12275 triggers took 0.083 seconds.
Deleting 12275 triggers took 270.861 seconds.
Creating 12275 triggers took 0.089 seconds.
Deleting 12275 triggers took 290.76 seconds.
Creating 12275 triggers took 0.129 seconds.
Deleting 12275 triggers took 310.206 seconds.
Creating 12275 triggers took 0.248 seconds.
Deleting 12275 triggers took 336.965 seconds.
Creating 12275 triggers took 0.109 seconds.
Deleting 12275 triggers took 365.956 seconds.
Creating 12275 triggers took 0.094 seconds.
Deleting 12275 triggers took 401.392 seconds.
Creating 12275 triggers took 0.089 seconds.
Deleting 12275 triggers took 425.003 seconds.
Creating 12275 triggers took 0.139 seconds.
Deleting 12275 triggers took 444.665 seconds.
Creating 12275 triggers took 0.089 seconds.
Deleting 12275 triggers took 463.895 seconds.
Creating 12275 triggers took 0.118 seconds.
Deleting 12275 triggers took 483.02 seconds.
Creating 12275 triggers took 0.229 seconds.
Deleting 12275 triggers took 504.724 seconds.
Creating 12275 triggers took 0.25 seconds.
Deleting 12275 triggers took 534.452 seconds.
Creating 12275 triggers took 0.102 seconds.
Deleting 12275 triggers took 569.113 seconds.
Creating 12275 triggers took 0.094 seconds.
Deleting 12275 triggers took 608.395 seconds.
Creating 12275 triggers took 0.088 seconds.
Deleting 12275 triggers took 638.472 seconds.
Creating 12275 triggers took 0.09 seconds.
Deleting 12275 triggers took 657.52 seconds.
Creating 12275 triggers took 0.091 seconds.
Deleting 12275 triggers took 676.723 seconds.
Creating 12275 triggers took 0.088 seconds.
Deleting 12275 triggers took 696.41 seconds.
Creating 12275 triggers took 0.088 seconds.
Deleting 12275 triggers took 715.571 seconds.

With 670mb use of memory (Lua using 175mb of that), without any buffer text. I couldn't get another crash, however.

Revision history for this message
Vadim Peretokin (vperetokin) wrote :

Aah ok. Thanks! Sorry, missed your reply before pasting the previous message.

Changed in mudlet:
status: New → Fix Committed
Changed in mudlet:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.