Giter VIP home page Giter VIP logo

golang-lru's Introduction

golang-lru

Build Status Coverage

This provides the lru package which implements a fixed-size thread safe LRU cache with expire feature. It is based on golang-lru.

Documentation

Full docs are available on Godoc

Example

Using the LRU is very simple:

l, _ := NewARCWithExpire(128, 30*time.Second)
for i := 0; i < 256; i++ {
    l.Add(i, nil)
}
if l.Len() != 128 {
    panic(fmt.Sprintf("bad len: %v", l.Len()))
}

Benchmarks

Running tool: /home/liqi/workspace/go/bin/go test -benchmem -run=^$ -coverprofile=/tmp/vscode-govFyHq9/go-code-cover -bench . github.com/sysulq/golang-lru

goos: linux
goarch: amd64
pkg: github.com/sysulq/golang-lru
Benchmark2Q_Rand-4    	 1000000	      1415 ns/op	     158 B/op	       5 allocs/op
--- BENCH: Benchmark2Q_Rand-4
    2q_test.go:34: hit: 0 miss: 1 ratio: 0.000000
    2q_test.go:34: hit: 1 miss: 99 ratio: 0.010101
    2q_test.go:34: hit: 1381 miss: 8619 ratio: 0.160227
    2q_test.go:34: hit: 248530 miss: 751470 ratio: 0.330725
Benchmark2Q_Freq-4    	 1000000	      1017 ns/op	     143 B/op	       5 allocs/op
--- BENCH: Benchmark2Q_Freq-4
    2q_test.go:66: hit: 1 miss: 0 ratio: +Inf
    2q_test.go:66: hit: 100 miss: 0 ratio: +Inf
    2q_test.go:66: hit: 9840 miss: 160 ratio: 61.500000
    2q_test.go:66: hit: 332417 miss: 667583 ratio: 0.497941
BenchmarkARC_Rand-4   	 1000000	      1402 ns/op	     193 B/op	       6 allocs/op
--- BENCH: BenchmarkARC_Rand-4
    arc_test.go:39: hit: 0 miss: 1 ratio: 0.000000
    arc_test.go:39: hit: 1 miss: 99 ratio: 0.010101
    arc_test.go:39: hit: 1398 miss: 8602 ratio: 0.162520
    arc_test.go:39: hit: 249099 miss: 750901 ratio: 0.331733
BenchmarkARC_Freq-4   	  963909	      1190 ns/op	     166 B/op	       5 allocs/op
--- BENCH: BenchmarkARC_Freq-4
    arc_test.go:71: hit: 1 miss: 0 ratio: +Inf
    arc_test.go:71: hit: 100 miss: 0 ratio: +Inf
    arc_test.go:71: hit: 9860 miss: 140 ratio: 70.428571
    arc_test.go:71: hit: 310475 miss: 653434 ratio: 0.475144
BenchmarkLRU_Rand-4   	 2287102	       613 ns/op	      88 B/op	       3 allocs/op
--- BENCH: BenchmarkLRU_Rand-4
    lru_test.go:34: hit: 0 miss: 1 ratio: 0.000000
    lru_test.go:34: hit: 0 miss: 100 ratio: 0.000000
    lru_test.go:34: hit: 1379 miss: 8621 ratio: 0.159958
    lru_test.go:34: hit: 248489 miss: 751511 ratio: 0.330653
    lru_test.go:34: hit: 570640 miss: 1716462 ratio: 0.332451
BenchmarkLRU_Freq-4   	 2456690	       487 ns/op	      83 B/op	       3 allocs/op
--- BENCH: BenchmarkLRU_Freq-4
    lru_test.go:66: hit: 1 miss: 0 ratio: +Inf
    lru_test.go:66: hit: 100 miss: 0 ratio: +Inf
    lru_test.go:66: hit: 9846 miss: 154 ratio: 63.935065
    lru_test.go:66: hit: 312529 miss: 687471 ratio: 0.454607
    lru_test.go:66: hit: 752485 miss: 1704205 ratio: 0.441546
PASS
coverage: 54.9% of statements
ok  	github.com/sysulq/golang-lru	9.138s

Running tool: /home/liqi/workspace/go/bin/go test -benchmem -run=^$ -coverprofile=/tmp/vscode-govFyHq9/go-code-cover -bench . github.com/sysulq/golang-lru

goos: linux
goarch: amd64
pkg: github.com/sysulq/golang-lru
Benchmark2Q_Rand-4    	 1000000	      1090 ns/op	      92 B/op	       4 allocs/op
--- BENCH: Benchmark2Q_Rand-4
    2q_test.go:34: hit: 0 miss: 1 ratio: 0.000000
    2q_test.go:34: hit: 0 miss: 100 ratio: 0.000000
    2q_test.go:34: hit: 1375 miss: 8625 ratio: 0.159420
    2q_test.go:34: hit: 249496 miss: 750504 ratio: 0.332438
Benchmark2Q_Freq-4    	 1223035	       944 ns/op	      85 B/op	       4 allocs/op
--- BENCH: Benchmark2Q_Freq-4
    2q_test.go:66: hit: 1 miss: 0 ratio: +Inf
    2q_test.go:66: hit: 100 miss: 0 ratio: +Inf
    2q_test.go:66: hit: 9872 miss: 128 ratio: 77.125000
    2q_test.go:66: hit: 334464 miss: 665536 ratio: 0.502548
    2q_test.go:66: hit: 405282 miss: 817753 ratio: 0.495604
BenchmarkARC_Rand-4   	 1000000	      1330 ns/op	     111 B/op	       4 allocs/op
--- BENCH: BenchmarkARC_Rand-4
    arc_test.go:39: hit: 0 miss: 1 ratio: 0.000000
    arc_test.go:39: hit: 0 miss: 100 ratio: 0.000000
    arc_test.go:39: hit: 1368 miss: 8632 ratio: 0.158480
    arc_test.go:39: hit: 248419 miss: 751581 ratio: 0.330529
BenchmarkARC_Freq-4   	 1000000	      1090 ns/op	      93 B/op	       4 allocs/op
--- BENCH: BenchmarkARC_Freq-4
    arc_test.go:71: hit: 1 miss: 0 ratio: +Inf
    arc_test.go:71: hit: 100 miss: 0 ratio: +Inf
    arc_test.go:71: hit: 9876 miss: 124 ratio: 79.645161
    arc_test.go:71: hit: 337535 miss: 662465 ratio: 0.509514
BenchmarkLRU_Rand-4   	 2327682	       509 ns/op	      52 B/op	       2 allocs/op
--- BENCH: BenchmarkLRU_Rand-4
    lru_test.go:34: hit: 0 miss: 1 ratio: 0.000000
    lru_test.go:34: hit: 1 miss: 99 ratio: 0.010101
    lru_test.go:34: hit: 1478 miss: 8522 ratio: 0.173433
    lru_test.go:34: hit: 249019 miss: 750981 ratio: 0.331592
    lru_test.go:34: hit: 580746 miss: 1746936 ratio: 0.332437
BenchmarkLRU_Freq-4   	 2630702	       475 ns/op	      49 B/op	       2 allocs/op
--- BENCH: BenchmarkLRU_Freq-4
    lru_test.go:66: hit: 1 miss: 0 ratio: +Inf
    lru_test.go:66: hit: 100 miss: 0 ratio: +Inf
    lru_test.go:66: hit: 9784 miss: 216 ratio: 45.296296
    lru_test.go:66: hit: 311783 miss: 688217 ratio: 0.453030
    lru_test.go:66: hit: 810266 miss: 1820436 ratio: 0.445094
PASS
coverage: 55.3% of statements
ok  	github.com/sysulq/golang-lru	9.714s
Running tool: /home/liqi/workspace/go/bin/go test -benchmem -run=^$ -coverprofile=/tmp/vscode-govFyHq9/go-code-cover -bench . github.com/sysulq/golang-lru

goos: linux
goarch: amd64
pkg: github.com/sysulq/golang-lru
Benchmark2Q_Rand-4    	 1000000	      1311 ns/op	      26 B/op	       2 allocs/op
--- BENCH: Benchmark2Q_Rand-4
    2q_test.go:34: hit: 0 miss: 1 ratio: 0.000000
    2q_test.go:34: hit: 0 miss: 100 ratio: 0.000000
    2q_test.go:34: hit: 1320 miss: 8680 ratio: 0.152074
    2q_test.go:34: hit: 249497 miss: 750503 ratio: 0.332440
Benchmark2Q_Freq-4    	 1515253	       811 ns/op	      25 B/op	       2 allocs/op
--- BENCH: Benchmark2Q_Freq-4
    2q_test.go:66: hit: 1 miss: 0 ratio: +Inf
    2q_test.go:66: hit: 100 miss: 0 ratio: +Inf
    2q_test.go:66: hit: 9880 miss: 120 ratio: 82.333333
    2q_test.go:66: hit: 333341 miss: 666659 ratio: 0.500017
    2q_test.go:66: hit: 416877 miss: 839436 ratio: 0.496616
    2q_test.go:66: hit: 500425 miss: 1014828 ratio: 0.493113
BenchmarkARC_Rand-4   	 1000000	      1162 ns/op	      27 B/op	       2 allocs/op
--- BENCH: BenchmarkARC_Rand-4
    arc_test.go:39: hit: 0 miss: 1 ratio: 0.000000
    arc_test.go:39: hit: 0 miss: 100 ratio: 0.000000
    arc_test.go:39: hit: 1437 miss: 8563 ratio: 0.167815
    arc_test.go:39: hit: 248890 miss: 751110 ratio: 0.331363
BenchmarkARC_Freq-4   	 1418329	       860 ns/op	      26 B/op	       2 allocs/op
--- BENCH: BenchmarkARC_Freq-4
    arc_test.go:71: hit: 1 miss: 0 ratio: +Inf
    arc_test.go:71: hit: 100 miss: 0 ratio: +Inf
    arc_test.go:71: hit: 9847 miss: 153 ratio: 64.359477
    arc_test.go:71: hit: 337917 miss: 662083 ratio: 0.510385
    arc_test.go:71: hit: 472261 miss: 946068 ratio: 0.499183
BenchmarkLRU_Rand-4   	 2970676	       397 ns/op	      16 B/op	       1 allocs/op
--- BENCH: BenchmarkLRU_Rand-4
    lru_test.go:34: hit: 0 miss: 1 ratio: 0.000000
    lru_test.go:34: hit: 0 miss: 100 ratio: 0.000000
    lru_test.go:34: hit: 1375 miss: 8625 ratio: 0.159420
    lru_test.go:34: hit: 249937 miss: 750063 ratio: 0.333221
    lru_test.go:34: hit: 741873 miss: 2228803 ratio: 0.332857
BenchmarkLRU_Freq-4   	 3186918	       359 ns/op	      16 B/op	       1 allocs/op
--- BENCH: BenchmarkLRU_Freq-4
    lru_test.go:66: hit: 1 miss: 0 ratio: +Inf
    lru_test.go:66: hit: 100 miss: 0 ratio: +Inf
    lru_test.go:66: hit: 9874 miss: 126 ratio: 78.365079
    lru_test.go:66: hit: 312430 miss: 687570 ratio: 0.454397
    lru_test.go:66: hit: 977757 miss: 2209161 ratio: 0.442592
PASS
coverage: 55.3% of statements
ok  	github.com/sysulq/golang-lru	11.639s

golang-lru's People

Contributors

alanshaw avatar alexandergugel avatar armon avatar athre0z avatar blopker avatar client9 avatar dankinder avatar dieterbe avatar dkumor avatar jtsylve avatar mreid-moz avatar rgbkrk avatar ryanuber avatar sciolizer avatar sean- avatar shawnps avatar sysulq avatar yuokada avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

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.