{"id":17327910,"url":"https://github.com/wenyxu/sync-adaptive-radix-tree","last_synced_at":"2025-06-20T15:08:28.158Z","repository":{"id":61753248,"uuid":"554797956","full_name":"WenyXu/sync-adaptive-radix-tree","owner":"WenyXu","description":"An implementation of the Adaptive Radix Tree with Optimistic Lock Coupling.","archived":false,"fork":false,"pushed_at":"2025-02-23T04:40:56.000Z","size":2859,"stargazers_count":9,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-06T10:44:27.779Z","etag":null,"topics":["adaptive-radix-tree","optimistic-lock-coupling","radix-tree"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WenyXu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-20T12:15:19.000Z","updated_at":"2025-03-11T00:22:59.000Z","dependencies_parsed_at":"2024-10-15T14:21:38.411Z","dependency_job_id":"78b59c2a-17b2-45d0-8587-3ec811749670","html_url":"https://github.com/WenyXu/sync-adaptive-radix-tree","commit_stats":{"total_commits":2,"total_committers":1,"mean_commits":2.0,"dds":0.0,"last_synced_commit":"1ae3c4a8dd9224898f48212e78961705e92069ea"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WenyXu%2Fsync-adaptive-radix-tree","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WenyXu%2Fsync-adaptive-radix-tree/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WenyXu%2Fsync-adaptive-radix-tree/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WenyXu%2Fsync-adaptive-radix-tree/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WenyXu","download_url":"https://codeload.github.com/WenyXu/sync-adaptive-radix-tree/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248923724,"owners_count":21183953,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adaptive-radix-tree","optimistic-lock-coupling","radix-tree"],"created_at":"2024-10-15T14:21:34.012Z","updated_at":"2025-04-14T17:21:02.718Z","avatar_url":"https://github.com/WenyXu.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Adaptive radix tree Synchronized\n\nThis repository provides the implementation of the Adaptive Radix Tree with Optimistic Lock Coupling.\n\nThe implementation is based on following papers:\n\n- [The Adaptive Radix Tree: ARTful Indexing for Main-Memory Databases](https://db.in.tum.de/~leis/papers/ART.pdf)\n- [The ART of Practical Synchronization](https://dl.acm.org/citation.cfm?id=2933352)\n\n## Benchmark\n\nThe benchmark tests are located in [tree_concurrent_test.go](./tree_concurrent_test.go)\n\n`frac_x` means `0.x` read fraction. frac_0 means write-only, frac_10 means read-only.\n\n```bash\n// Skip list\nBenchmarkSklReadWrite\nBenchmarkSklReadWrite/frac_0\nBenchmarkSklReadWrite/frac_0-8          \t 2643458\t       605.3 ns/op\nBenchmarkSklReadWrite/frac_1\nBenchmarkSklReadWrite/frac_1-8          \t 2917704\t       475.5 ns/op\nBenchmarkSklReadWrite/frac_2\nBenchmarkSklReadWrite/frac_2-8          \t 3183054\t       450.3 ns/op\nBenchmarkSklReadWrite/frac_3\nBenchmarkSklReadWrite/frac_3-8          \t 3397573\t       409.4 ns/op\nBenchmarkSklReadWrite/frac_4\nBenchmarkSklReadWrite/frac_4-8          \t 3857455\t       388.2 ns/op\nBenchmarkSklReadWrite/frac_5\nBenchmarkSklReadWrite/frac_5-8          \t 4338092\t       384.0 ns/op\nBenchmarkSklReadWrite/frac_6\nBenchmarkSklReadWrite/frac_6-8          \t 5014927\t       322.1 ns/op\nBenchmarkSklReadWrite/frac_7\nBenchmarkSklReadWrite/frac_7-8          \t 6169614\t       306.8 ns/op\nBenchmarkSklReadWrite/frac_8\nBenchmarkSklReadWrite/frac_8-8          \t 7852905\t       256.6 ns/op\nBenchmarkSklReadWrite/frac_9\nBenchmarkSklReadWrite/frac_9-8          \t10119721\t       182.2 ns/op\nBenchmarkSklReadWrite/frac_10\nBenchmarkSklReadWrite/frac_10-8         \t240735708\t         5.294 ns/op\n\n// Sync-ART (our implementation)\nBenchmarkArtReadWrite\nBenchmarkArtReadWrite/frac_0\nBenchmarkArtReadWrite/frac_0-8          \t 8110496\t       182.7 ns/op\nBenchmarkArtReadWrite/frac_1\nBenchmarkArtReadWrite/frac_1-8          \t 7584531\t       202.1 ns/op\nBenchmarkArtReadWrite/frac_2\nBenchmarkArtReadWrite/frac_2-8          \t 7491115\t       171.5 ns/op\nBenchmarkArtReadWrite/frac_3\nBenchmarkArtReadWrite/frac_3-8          \t 9471957\t       147.1 ns/op\nBenchmarkArtReadWrite/frac_4\nBenchmarkArtReadWrite/frac_4-8          \t10404744\t       139.5 ns/op\nBenchmarkArtReadWrite/frac_5\nBenchmarkArtReadWrite/frac_5-8          \t11536880\t       149.2 ns/op\nBenchmarkArtReadWrite/frac_6\nBenchmarkArtReadWrite/frac_6-8          \t14883390\t       106.3 ns/op\nBenchmarkArtReadWrite/frac_7\nBenchmarkArtReadWrite/frac_7-8          \t12550774\t       103.6 ns/op\nBenchmarkArtReadWrite/frac_8\nBenchmarkArtReadWrite/frac_8-8          \t18014038\t        85.53 ns/op\nBenchmarkArtReadWrite/frac_9\nBenchmarkArtReadWrite/frac_9-8          \t28922254\t        62.25 ns/op\nBenchmarkArtReadWrite/frac_10\nBenchmarkArtReadWrite/frac_10-8         \t164754861\t         7.134 ns/op\n\n// Map with sync.Mutex\nBenchmarkReadWriteMap\nBenchmarkReadWriteMap/frac_0\nBenchmarkReadWriteMap/frac_0-8          \t 2181128\t       569.5 ns/op\nBenchmarkReadWriteMap/frac_1\nBenchmarkReadWriteMap/frac_1-8          \t 2656879\t       475.6 ns/op\nBenchmarkReadWriteMap/frac_2\nBenchmarkReadWriteMap/frac_2-8          \t 3409819\t       415.9 ns/op\nBenchmarkReadWriteMap/frac_3\nBenchmarkReadWriteMap/frac_3-8          \t 3728640\t       398.0 ns/op\nBenchmarkReadWriteMap/frac_4\nBenchmarkReadWriteMap/frac_4-8          \t 3700561\t       396.7 ns/op\nBenchmarkReadWriteMap/frac_5\nBenchmarkReadWriteMap/frac_5-8          \t 3923648\t       387.9 ns/op\nBenchmarkReadWriteMap/frac_6\nBenchmarkReadWriteMap/frac_6-8          \t 4845210\t       354.7 ns/op\nBenchmarkReadWriteMap/frac_7\nBenchmarkReadWriteMap/frac_7-8          \t 4749722\t       297.4 ns/op\nBenchmarkReadWriteMap/frac_8\nBenchmarkReadWriteMap/frac_8-8          \t 6310018\t       271.9 ns/op\nBenchmarkReadWriteMap/frac_9\nBenchmarkReadWriteMap/frac_9-8          \t 8999284\t       235.0 ns/op\nBenchmarkReadWriteMap/frac_10\nBenchmarkReadWriteMap/frac_10-8         \t 8761596\t       137.3 ns/op\n\n// Sync.Map \nBenchmarkReadWriteSyncMap\nBenchmarkReadWriteSyncMap/frac_0\nBenchmarkReadWriteSyncMap/frac_0-8      \t 1378032\t       764.8 ns/op\nBenchmarkReadWriteSyncMap/frac_1\nBenchmarkReadWriteSyncMap/frac_1-8      \t 1484005\t       749.5 ns/op\nBenchmarkReadWriteSyncMap/frac_2\nBenchmarkReadWriteSyncMap/frac_2-8      \t 1923976\t       675.5 ns/op\nBenchmarkReadWriteSyncMap/frac_3\nBenchmarkReadWriteSyncMap/frac_3-8      \t 1898367\t       666.8 ns/op\nBenchmarkReadWriteSyncMap/frac_4\nBenchmarkReadWriteSyncMap/frac_4-8      \t 2078604\t       671.0 ns/op\nBenchmarkReadWriteSyncMap/frac_5\nBenchmarkReadWriteSyncMap/frac_5-8      \t 1937666\t       689.1 ns/op\nBenchmarkReadWriteSyncMap/frac_6\nBenchmarkReadWriteSyncMap/frac_6-8      \t 1850360\t       655.9 ns/op\nBenchmarkReadWriteSyncMap/frac_7\nBenchmarkReadWriteSyncMap/frac_7-8      \t 1910458\t       689.3 ns/op\nBenchmarkReadWriteSyncMap/frac_8\nBenchmarkReadWriteSyncMap/frac_8-8      \t 1982641\t       672.2 ns/op\nBenchmarkReadWriteSyncMap/frac_9\nBenchmarkReadWriteSyncMap/frac_9-8      \t 2560873\t       521.2 ns/op\nBenchmarkReadWriteSyncMap/frac_10\nBenchmarkReadWriteSyncMap/frac_10-8     \t149435343\t         7.603 ns/op\n\n// Sync-ART (our implementation)\nBenchmarkArtConcurrentInsert\nBenchmarkArtConcurrentInsert-8          \t 6504886\t       171.3 ns/op\n\n// Sync-ART (another implementation)\nBenchmarkAnotherArtConcurrentInsert\nBenchmarkAnotherArtConcurrentInsert-8   \t 7657372\t       195.6 ns/op\n\n// Btree \nBenchmarkBtreeConcurrentInsert\nBenchmarkBtreeConcurrentInsert-8        \t 1502853\t       993.1 ns/op\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwenyxu%2Fsync-adaptive-radix-tree","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwenyxu%2Fsync-adaptive-radix-tree","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwenyxu%2Fsync-adaptive-radix-tree/lists"}