Coder Social home page Coder Social logo

erlang-geoip's Introduction

GeoIP by Hunter

How to build the driver:
Open up VC command prompt
type in makevc.bat

Makefiles for other platforms are welcomed :)

download latest geoip (GeoIP.dat) country database from http://www.maxmind.com/app/geolitecountry

This driver offers high performance for ip to country lookup in Erlang.

Currently it's able to do ~1,200,000 (1.2 million) lookups per second on an AMD 2ghz cpu.

%%
%% Basic Usage:
%%
%% > Geoip = geoip:new("GeoIP.dat").
%% #Port<0.2755>
%%
%% > geoip:get_country_by_ip(Geoip, "24.24.24.24").
%% "United States"
%%
%% > geoip:get_country_by_ip(Geoip, <<"80.24.24.80">>).
%% "Spain"
%%
%% > geoip:delete(Geoip).
%% ok
%%

%%
%% Advanced usage:
%%
%% > Geoip = geoip:new("GeoIP.dat").
%% #Port<0.2755>
%%
%% > geoip:use_binary(Geoip).
%% []
%%
%% > geoip:get_country_by_ip(Geoip, "24.24.24.24").
%% <<"United States">>
%%
%% > geoip:get_country_by_ip(Geoip, "invalidip").
%% []
%%
%% > geoip:use_string(Geoip).                      
%% []
%%
%% > geoip:get_country_by_ip(Geoip, "24.24.24.24").
%% "United States"
%%
%% > geoip:get_country_by_ip(Geoip, "invalidip").
%% []
%%
%% > geoip:delete(Geoip).
%% ok
%%

%%
%% Erlang benchmark
%%
%% > geoip:benchmark().
%% 100000 lookups for "? GEOIP_STANDARD": (2556 ms) 
%% 100000 lookups for "? GEOIP_CHECK_CACHE": (2435 ms) 
%% 1000000 lookups for "? GEOIP_MEMORY_CACHE": (890 ms) 
%% 1000000 lookups for "? GEOIP_MEMORY_CACHE bor ? GEOIP_CHECK_CACHE": (903 ms) 
%% 

%%
%% C Benchmark
%%
%% >benchmark.exe
%%
%% GeoIP Country
%% 120000 lookups made in 2.769962 seconds
%%
%% GeoIP Country with GEOIP_CHECK_CACHE
%% 120000 lookups made in 2.684795 seconds
%%
%% GeoIP Country with GEOIP_MEMORY_CACHE
%% 1200000 lookups made in 0.409928 seconds
%%
%% GeoIP Country with GEOIP_MEMORY_CACHE and GEOIP_CHECK_CACHE
%% 1200000 lookups made in 0.414053 seconds
%%

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.