|
1 | | -from functools import partial |
| 1 | +import random |
2 | 2 | from operator import attrgetter, itemgetter |
3 | 3 | from pathlib import Path |
4 | | -from random import randint, sample |
5 | 4 |
|
| 5 | +import aiohttp.web |
6 | 6 | import jinja2 |
| 7 | +import sqlalchemy |
| 8 | +import sqlalchemy.orm |
7 | 9 | import ujson |
8 | | -from aiohttp.web import Response, json_response |
9 | | -from sqlalchemy import select |
10 | | -from sqlalchemy.orm.attributes import flag_modified |
11 | 10 |
|
12 | | -from .models import sa_fortunes, sa_worlds, Fortune, World |
| 11 | +from . import models |
13 | 12 |
|
14 | 13 | ADDITIONAL_FORTUNE_ORM = Fortune(id=0, message='Additional fortune added at request time.') |
15 | 14 | ADDITIONAL_FORTUNE_ROW = {'id': 0, 'message': 'Additional fortune added at request time.'} |
|
23 | 22 | sort_fortunes_orm = attrgetter('message') |
24 | 23 | sort_fortunes_raw = itemgetter('message') |
25 | 24 |
|
| 25 | +# In current versions of Python (tested 3.9 and 3.12), from ... import ... |
| 26 | +# creates variables that are atleast 4x slower to reference: |
| 27 | +# > python3 -m timeit 'from random import sample' 'sample' |
| 28 | +# 500000 loops, best of 5: 823 nsec per loop |
| 29 | +# > python3 -m timeit 'import random' 'random.sample' |
| 30 | +# 2000000 loops, best of 5: 161 nsec per loop |
| 31 | +# > python3 -m timeit 'import random; sample = random.sample' 'sample' |
| 32 | +# 2000000 loops, best of 5: 161 nsec per loop |
| 33 | +randint = random.randint |
| 34 | +sample = random.sample |
| 35 | +Response = aiohttp.web.Response |
| 36 | +json_response = aiohttp.web.json_response |
| 37 | +select = sqlalchemy.select |
| 38 | +flag_modified = sqlalchemy.orm.attributes.flag_modified |
| 39 | +Fortune = models.Fortune |
| 40 | +World = models.World |
| 41 | + |
26 | 42 |
|
27 | 43 | def get_num_queries(request): |
28 | 44 | try: |
|
0 commit comments