{"id":21322071,"url":"https://github.com/advantageous/go-qbit","last_synced_at":"2025-07-12T05:30:46.035Z","repository":{"id":57498127,"uuid":"76389452","full_name":"advantageous/go-qbit","owner":"advantageous","description":"GoLang QBit, just the queue","archived":false,"fork":false,"pushed_at":"2016-12-15T21:07:24.000Z","size":394,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-06T14:36:22.489Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/advantageous.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-12-13T19:02:56.000Z","updated_at":"2025-01-19T19:20:42.000Z","dependencies_parsed_at":"2022-08-28T17:12:05.113Z","dependency_job_id":null,"html_url":"https://github.com/advantageous/go-qbit","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/advantageous/go-qbit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/advantageous%2Fgo-qbit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/advantageous%2Fgo-qbit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/advantageous%2Fgo-qbit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/advantageous%2Fgo-qbit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/advantageous","download_url":"https://codeload.github.com/advantageous/go-qbit/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/advantageous%2Fgo-qbit/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264941548,"owners_count":23686509,"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":[],"created_at":"2024-11-21T20:13:04.847Z","updated_at":"2025-07-12T05:30:45.753Z","avatar_url":"https://github.com/advantageous.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-qbit\nGoLang QBit, just the queue!\n\nReduces thread synchronization and locking by sending messages in batches. \nImplements auto-flushing of batches. \n\n\nQBit queue is over 7.2 to 7.5 times faster than golang's internal channel.\nYou also get notification via callbacks when the queue is empty, a new batch started,\nor a new batch ended (and more).\n\n\n#### QBit queue\n```sh\ngo test -v github.com/advantageous/go-qbit/qbit -bench ^BenchmarkQueue$ -run ^$\n1\t13982813803 ns/op\nPASS\nok  \tgithub.com/advantageous/go-qbit/qbit\t13.992s\n\n```\n\nQBit with a single reader and a single writer was able to send \n71,469,411 messages a second. \n\n#### Go Channel \n```sh\ngo test -v github.com/advantageous/go-qbit/qbit -bench ^BenchmarkChannel$ -run ^$\n1\t104966302989 ns/op\nPASS\nok  \tgithub.com/advantageous/go-qbit/qbit\t104.980s\n\n```\n\nGolang channel with a single reader and a single writer was able to send \n9,525,623 messages a second. \n\n\n#### Improvement \n\nUse pooling. Created simpler queue manager. \n\n#### Queue Pooling off (2 seconds faster than before with simpler queue manager)\n```\nheap 2,437,776 \t GC count 4,531\n1\t12666113306 ns/op\nPASS\nok  \tgithub.com/advantageous/go-qbit/qbit\t12.676s\n```\n\n\n#### Queue Pooling on (3 seconds faster than before with simpler queue manager)\n```\nheap 2,505,232 \t GC count 3\n1\t10912673726 ns/op\nPASS\nok  \tgithub.com/advantageous/go-qbit/qbit\t10.924s\n```\n\nGC collections went from 4,531 to 3. \n\n![perf](/images/perf.png)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadvantageous%2Fgo-qbit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadvantageous%2Fgo-qbit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadvantageous%2Fgo-qbit/lists"}