Project

General

Profile

Actions

Bug #381

closed

Doba běhu přijímacího klienta roste s kvadrátem počtu přijaých eventů

Added by Vít Sláma over 12 years ago. Updated about 12 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Tomáš Plesník
Category:
-
Target version:
Start date:
03/15/2012
Due date:
% Done:

0%

Estimated time:

Description

Navrhuji vybrat všechny přijaté eventy z deserializovaného stromu najednou:

@response_list = $response->valueof('/Envelope/Body/getNewEventsResponse/event/');


Files

get_whole_list.diff (1.08 KB) get_whole_list.diff Pavel Kácha, 03/15/2012 10:22 AM
Actions #1

Updated by Pavel Kácha over 12 years ago

Připojuji diff z upravené verze Víta Slámy.

Actions #2

Updated by Pavel Kácha over 12 years ago

  • Priority changed from High to Normal

Ještě průvodní dopis od VS, ať jsou informace na jednom místě:

Zdravím,

mám to!

Snížil jsem obsah .id souboru o 10000 a následující getNewEvents trval 3 a půl hodiny. Podle kontrolních výpisů klient celou tu dobu zpracovával přijatá data a konzumoval 100% času jednoho procesoru. Problém je v opakovaném vlání funkce

$response->valueof("[$i]")

To totiž znamená opakovaný průchod stromem, když hledaný uzel se nachází vždy dál od začátku než předchozí. Jinými slovy: Doba zpracování cyklu roste s kvadrátem počtu přijatých eventů.

Myslím, že je nasnadě, k čemu tehdy došlo. Warden server měl výpadek, asi tak den. Po restartu odesílací klienti nahrnuli na server nahromaděné eventy a můj přijímací klient už je nebyl schopen přijmout za rozumnou dobu. Když už měl odpracováno přes 10 hodin strojového času, usoudil jsem, že někde cyklí a killnul jsem ho.

Funkce SOAP::SOM::valueof vrací v seznamovém kontexu všechny hledané uzly do pole, takže ji stačí zavolat jen jednou. V příloze je upravená verze přijímacího klienta, která dokáže zpracovat těch 10000 přijatých eventů za 2 vteřiny.

Programování je někdy věda...

V. Sláma

Actions #3

Updated by Tomáš Plesník over 12 years ago

  • Status changed from New to Closed

Vyborna prace, vse jsem jiz zapracoval a nahral do GITu - 2d9b313e. Opravena verze bude vydana v novem balicku warden klienta. Jeste jednou moc dekuji za pomoc. Ticket uzaviram.

Actions #4

Updated by Tomáš Plesník over 12 years ago

  • Assignee set to Tomáš Plesník
Actions #5

Updated by Tomáš Plesník about 12 years ago

  • Target version set to 1.1
Actions

Also available in: Atom PDF