Особенностью данного тестирования является некая приближенность к реальным условиям, когда есть необходимость определять страну одного посетителя на лету за один запуск скрипта, то есть: один запуск скрипта — один ip-адрес. В подобном тестировании от zapimir использовался другой принцип, который, как мне кажется, имеет мало общего с реальной необходимостью: один запуск скрипта — определение нескольких тысяч ip-адресов в цикле.
Первое, что мы сделаем — это сравним базы:
Разработчик | База | Дата обновления | Количество диапазонов, тыс | Размер базы, Kb |
GeoIP | GeoLite Country | 2014.06.03 | 93 | 688 |
Sypex Geo | Sypex Geo Country | 2014.06.20 | 90 | 365 |
TabGeo | tabgeo_country_v4 | 2014.06.20 | 200 | 998 |
Sypex Geo может похвастаться самой маленькой базой из всех представленных, но и самой низкой точность (90 000 диапазонов). Самая высокая точность у TabGeo — 200 000 диапазонов, но и, в связи с этим, самая пухлая база. GeoIP – по всем параметрам занимает промежуточное положение. Все базы на данный момент имеют регулярные обновления.
А теперь непосредственно перейдем к тестированию производительности разных баз. Особенностью тестирования было определение времени работы скрипта для определения одного ip-адреса за один запуск, затем данные интерпретировались в количество запусков на одну секунду.
Разработчик | База | Количество запросов в секунду (медиана) |
GeoIP | GeoLite Country | 460 |
Sypex Geo | Sypex Geo Country | 910 |
TabGeo | tabgeo_country_v4 | 1400 |
Из таблицы видно, что самым неспешным решением для геолокации является GeoIP – всего 460 запросов в секунду, для самого распространенного и популярного решения — это очень плохо, и хочется отметить, что GeoIP2 от MaxMind совсем не выход из данной ситуации (это больше информационная база, чем база для геолокации).
Серебряным призером данного соревнования является база и драйвер от Sypex Geo – 910 обращений в секунду, что в два раза лучше, чем результаты показанные GeoIP. Но абсолютным лидером в данной номинации является TabGeo – 1400 запросов в секунду при равных условиях, что в более чем в 1,5 раза лучше, чем Sypex Geo.
Также небольшой прирост производительности дает меньшее количество обращений к диску, сравнение при условии: одно определение страны — один запуск скрипта, показало, что минимальное значение этого параметра у TabGeo – от 1 до 3 дисковых операций, у Sypex Geo – 4 и полным аутсайдером в данном сравнении является GeoIP — от 23 до 52 на одну инициализацию и одно определение страны по ip-адресу.
Немаловажным значением является и размер памяти занимаемый скриптом: TabGeo – 26 Kb, Sypex Geo – 110 Kb и GeoIP – 285 Kb.
Из представленных данных можно сделать вывод, что самое популярное решение геолокации GeoIP – является одновременно и самым худшим для реальных проектов. Sypex Geo – занимает промежуточное положение в данной иерархии. Ну, и абсолютным лидером практически по всем параметрам (из представленных баз) — является TabGeo.
Сайты испытуемых баз:
TabGeo
Sypex Geo
GeoIp
Автор: dostelon