Closed JustinasKen closed 2 months ago
Po pakeitimų atliktai greičio palyginimo analizė (1M įrašų).
Struktūra:
id | d | r | b | m | property | type | ref | source | prepare | level | access | uri | title | description
| dataset | | | | | | | | |
| | | | | | | | | |
| | | | Country | | id | | | | open | | |
| | | | | id | integer | | | | | | | |
| | | | | name | string | | | | | | | |
| | | | | code | string | | | | | | | |
| | | | | | | | | |
| | | | City | | id | | | | open | | |
| | | | | id | integer | | | | | | | |
| | | | | name | string | | | | | | | |
| | | | | country | ref | Country | | | | | | |
versija | parametrai | trukmė |
---|---|---|
0.1.55 | 46.43s | |
0.1.69 | page(disable: true) | 1m 13.68s |
0.1.69 | page(size: 100000) | 1m 33.66s |
#746 | page(disable: true) | 59.91s |
#746 | page(size: 100000) | 1m 19.63s |
Rezultatai: 0.1.55 -> 0.1.69 (išjungtas puslapiavimas) ~ 59% suletėjimas 0.1.55 -> 0.1.69 (100000 puslapiavimas) ~ 102% suletėjimas
0.1.69 -> #746 (išjungtas puslapiavimas) ~ 19% pagreitėjimas 0.1.69 -> #746 (100000 puslapiavimas) ~ 15% pagreitėjimas
0.1.55 -> #746 (išjungtas puslapiavimas) ~ 29% suletėjimas 0.1.55 -> #746 (100000 puslapiavimas) ~ 72% suletėjimas
Ar pakankamas pagerinimas?
732 užduotyje buvo aptika, kad po naujausių atnaujinimų sistema smarkiai suletėjo. Viena iš priežasčių, buvo netinkamas puslapio dydis. Atliekant tolimesnę analizę, buvo aptikta keletą kodo vietų, kurios užtrunka pernelyg ilgai. Plačiau apie rezultatus komentare:
https://github.com/atviriduomenys/spinta/issues/732#issuecomment-2309513026.
Reiktų iškelti
list_keys
generavimą, kad veiktų vieną kartą, prieš iteruojant reikšmes. Taip pat svarbu iškelti dažnai naudojamus parametrus į kintamuosius (kad kas kartą be reikalo nesikreiptų į objektą). Naujaget_row_value
funkcija, kiekvieną kartą kviečiama sukuriaResultBuilder
, nesvarbu ar to reikia ar ne, tai reiktų pakeisti, kadResultBuilder
būtų kuriamas, tik tada kai jai to reikia.Visą tai reiktų taip pat peržvelgti ir su
Sql
backend
.Pabaigoje atlikti 1M įrašų gąvimo greitį
0.1.55
versijoje,0.1.69
versijoje (įjungus ir išjungus puslapiavimą), bei patvarkytoje versijoje (įjungus ir išjungus puslapiavimą).Užduotys
PostgreSQL
backend
getall
funkciją.get_row_values
funkciją.Sql
backend
funkciją.Susiję
732