Книга поможет выработать правильную тактику и оценить перспективы раз



Pdf көрінісі
бет24/24
Дата19.11.2023
өлшемі1.3 Mb.
#483696
1   ...   16   17   18   19   20   21   22   23   24
refaktoringsql-prilozheniy

32
Глава 1. Оценка
Код валюты
Название валюты
Доля
EUR
Евро
41,3
USD
Доллар США
24,3
JPY
Японская йена
13,6
�BP
Английский фунт стерлингов
11,1
CHF
Швейцарский франк
2,6
HKD
Гонконгский доллар
2,1
SEK
Шведская крона
1,1
AUD
Австралийский доллар
0,7
S�D
Сингапурский доллар
0,5
Общая доля главных валют равна 97,3% . Я добавил оставшиеся 2,7% 
случайно выбранными валютами из 170 записанных валют (включая 
главные валюты для этого конкретного банка) .
В результате мы не только вызываем функцию AboveThreshold() сотни ты-
сяч раз, но и сама эта функция вызывает те же строки из таблицы пре-
делов . Вы можете подумать, что поскольку эти несколько строк будут, 
вероятно, храниться в кэше сервера базы данных, это не имеет большо-
го значения . Но это на самом деле не так, и я продемонстрирую степень 
влияния этих неэффективных вызовов, переписав функцию более эф-
фективным образом .
Я назвал новую версию программы ThirdExample.java . В ней я исполь-
зовал для хранения данных некоторые специфичные коллекции языка 
Java – HashMaps . В этих коллекциях хранятся пары ключ-значение, а хе-
ширование ключа позволяет получить индекс массива, сообщающий, 
куда пара должна идти . В других языках можно было бы использовать 
массивы . Но идея заключается в том, чтобы избегать запросов к базе дан-
ных, используя пространство памяти процесса как кэш . Когда какие-то 
данные запрашиваются первый раз, их получают из базы данных и сохра-
няют в коллекции, прежде чем вернуть значение вызывающей функции .
Следующий раз, когда я запрашиваю те же самые данные, я нахожу их 
в моем маленьком локальном кэше и возвращаю почти мгновенно . Два 
обстоятельства позволяют кэшировать данные:
• Поскольку эта программа не из реальной практики, и я знаю, что 
если буду повторно запрашивать значения предела для данной ва-
люты, то буду каждый раз получать одно и то же значение: измене-
ний между вызовами не будет .
• Я имею дело с небольшим количеством данных, поэтому не буду 
хранить гигабайты их в кэше . Требования к памяти – важный мо-
мент, который надо учитывать, если возможна ситуация с большим 
количеством конкурирующих сессий .


Достарыңызбен бөлісу:
1   ...   16   17   18   19   20   21   22   23   24




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет