Closed jO-Osko closed 3 years ago
A imamo kakšne ocene, koliko je to kaj časovno potratno? Ker semester se poišče za vsako stran.
Benchmarkov nimam V najslabšem primeru je 7x lookup po bazi glede na semester_od ali do, v običajnem primeru še to samo na objavljenih, ki jih je relativno malo (trenutno 7). Potem pa še nekaj računanja z datumi. Bom malo potestiral
Tak hitri benchmark s silk
in 1000 naključnimi semestri da okoli 0.01 s na klic v najslabšem primeru:
52957 function calls (49959 primitive calls) in 0.050 seconds
Ordered by: cumulative time
ncalls tottime percall cumtime percall filename:lineno(function)
.....................................................................................................
1 0.000 0.000 0.012 0.012 .../urnik/context_preprocessors.py:13(izbrani_semester)
1 0.000 0.000 0.012 0.012 .../urnik/views.py:21(izbrani_semester)
2 0.000 0.000 0.010 0.005 .../venv/lib/python3.7/site-packages/django/template/engine.py:121(find_template)
4 0.000 0.000 0.010 0.003 .../venv/lib/python3.7/site-packages/django/template/loaders/base.py:9(get_template)
26 0.000 0.000 0.010 0.000 .../venv/lib/python3.7/site-packages/django/db/models/sql/compiler.py:464(as_sql)
13 0.000 0.000 0.010 0.001 /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/traceback.py:193(format_stack)
1 0.000 0.000 0.010 0.010 .../urnik/models.py:248(najblizji_semester)
..............................................................................................................................
sqlite
na disku, in python3.7
virtualenvironment v DEBUG
mode.
Če se doda indekse zadeva ostane pod 0.015 tudi z 10000 semestri (worst case)
Trenutno iskanje aktivnega semestra vzame najkasnejši aktivni semester. Če urnik vsebuje javno objavljen urnik za celotno leto, potem je tudi recimo oktobra avtomatično izbran poletni semester.
Po tem PR-ju se trenutni semester določi kot tisti, ki vsebuje današnji dan, ali pa najbližji objavljen semester (tisti ki se konča ali začne najbližje). Za vsak slučaj, če se semestri čudno prekrivajo, kot fallback vzame najkasnejši aktivni semester.
Za FMF to trenutno ni problematično, saj urniki niso objavljeni vnaprej, bi pa to lahko prišlo prav v prihodnosti.
Testi potrebujejo #101