{"id":22450119,"url":"https://github.com/co-log/co-log-benchmarks","last_synced_at":"2025-03-27T12:17:19.558Z","repository":{"id":41996529,"uuid":"412879556","full_name":"co-log/co-log-benchmarks","owner":"co-log","description":"🏎 Benchmarks of the co-log logging library","archived":false,"fork":false,"pushed_at":"2025-03-21T05:41:00.000Z","size":63,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-21T06:29:23.108Z","etag":null,"topics":["benchmarks","co-log","hacktoberfest","haskell","logging"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/co-log.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-02T18:25:20.000Z","updated_at":"2025-03-21T05:41:03.000Z","dependencies_parsed_at":"2024-01-12T15:19:15.135Z","dependency_job_id":"c1c72da5-1ec0-4688-b375-18960f47700a","html_url":"https://github.com/co-log/co-log-benchmarks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/co-log%2Fco-log-benchmarks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/co-log%2Fco-log-benchmarks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/co-log%2Fco-log-benchmarks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/co-log%2Fco-log-benchmarks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/co-log","download_url":"https://codeload.github.com/co-log/co-log-benchmarks/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245841761,"owners_count":20681195,"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":["benchmarks","co-log","hacktoberfest","haskell","logging"],"created_at":"2024-12-06T05:13:15.526Z","updated_at":"2025-03-27T12:17:19.552Z","avatar_url":"https://github.com/co-log.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# co-log\n\n![Co-logo](https://user-images.githubusercontent.com/8126674/80955687-92f21a80-8df7-11ea-90d3-422dafdc8391.png)\n\n[![GitHub CI](https://github.com/kowainik/co-log/workflows/CI/badge.svg)](https://github.com/kowainik/co-log/actions)\n[![Build status](https://img.shields.io/travis/kowainik/co-log.svg?logo=travis)](https://travis-ci.org/kowainik/co-log)\n[![Windows build](https://ci.appveyor.com/api/projects/status/github/kowainik/co-log?branch=main\u0026svg=true)](https://ci.appveyor.com/project/kowainik/co-log)\n[![MPL-2.0 license](https://img.shields.io/badge/license-MPL--2.0-blue.svg)](https://github.com/kowainik/co-log/blob/main/LICENSE)\n\n\n|                   |                                    |                                           |                                                       |\n| :------------     | :--------------------------------- | :---------------------------------------- | :---------------------------------------------------- |\n| `co-log-core`     | [![Hackage][hk-img-core]][hk-core] | [![Stackage LTS][lts-img-core]][lts-core] | [![Stackage Nightly][nightly-img-core]][nightly-core] |\n| `co-log`          | [![Hackage][hk-img]][hk]           | [![Stackage LTS][lts-img]][lts]           | [![Stackage Nightly][nightly-img]][nightly]           |\n| `co-log-polysemy` | [![Hackage][hk-img-ps]][hk-ps]     | [![Stackage LTS][lts-img-ps]][lts-ps]     | [![Stackage Nightly][nightly-img-ps]][nightly-ps]     |\n\n`co-log` is a composable and configurable logging framework. It\ncombines all the benefits of Haskell idioms to provide a reasonable\nand convenient interface. Though it uses some advanced concepts in its\ncore, we are striving to provide beginner-friendly API. The library\nalso contains complete documentation with a lot of beginner-friendly\nexamples, explanations and tutorials to guide users. The combination\nof a pragmatic approach to logging and fundamental Haskell abstractions\nallows us to create a highly composable and configurable logging\nframework.\n\nIf you're interested in how different Haskell typeclasses are used to\nimplement core functions of `co-log`, you can read the following blog\npost which goes into detail about internal implementation specifics:\n\n* [co-log: Composable Contravariant Combinatorial Comonadic Configurable Convenient Logging](https://kowainik.github.io/posts/2018-09-25-co-log)\n\n`co-log` is also modular on the level of packages. We care a lot about a\nlow dependency footprint so you can build your logging only on top of\nthe minimal required interface for your use-case. This repository contains\nthe following packages:\n\n* [`co-log-core`](co-log-core): lightweight package with basic data types and\n  general idea which depends only on `base`.\n* [`co-log`](co-log): taggless final implementation of logging library based on\n  `co-log-core`.\n* [`co-log-polysemy`](co-log-polysemy): implementation of logging library based\n  on `co-log-core` and the [`polysemy`](http://hackage.haskell.org/package/polysemy) extensible effects library.\n* [`co-log-benchmark`](co-log-benchmark): benchmarks of the `co-log` library.\n\nTo provide a more user-friendly introduction to the library, we've\ncreated the tutorial series which introduces the main concepts behind `co-log`\nsmoothly:\n\n* [Intro: Using `LogAction`](https://github.com/kowainik/co-log/blob/main/co-log/tutorials/1-intro/Intro.md)\n* [Using custom monad that stores `LogAction` inside its environment](https://github.com/kowainik/co-log/blob/main/co-log/tutorials/2-custom/Custom.md)\n\n`co-log` also cares about concurrent logging. For this purpose we have the `concurrent-playground`\nexecutable where we experiment with different multithreading scenarios to test the library's behavior.\nYou can find it here:\n\n* [tutorials/Concurrent.hs](co-log/tutorials/Concurrent.hs)\n\n## Benchmarks\n\n`co-log` is compared with basic functions like `putStrLn`. Since IO overhead is\nbig enough, every benchmark dumps 10K messages to output. If a benchmark's name\ndoesn't contain `Message` then this benchmark simply dumps the string `\"message\"`\nto output, otherwise it works with the `Message` data type from the `co-log`\nlibrary.\n\nTo run benchmarks, use the following command:\n\n```\ncabal v2-run co-log-bench -- --svg bench.svg \u0026\u003e /dev/null\n```\n\n**Time for 10K messages:**\n\n![Benchmarks](bench.svg)\n\n[hk-img]: https://img.shields.io/hackage/v/co-log.svg?logo=haskell\n[hk-img-ps]: https://img.shields.io/hackage/v/co-log-polysemy.svg?logo=haskell\n[hk-img-core]: https://img.shields.io/hackage/v/co-log-core.svg?logo=haskell\n[hk]: https://hackage.haskell.org/package/co-log\n[hk-ps]: https://hackage.haskell.org/package/co-log-polysemy\n[hk-core]: https://hackage.haskell.org/package/co-log-core\n[lts-img]: http://stackage.org/package/co-log/badge/lts\n[lts-img-ps]: http://stackage.org/package/co-log-polysemy/badge/lts\n[lts-img-core]: http://stackage.org/package/co-log-core/badge/lts\n[lts]: http://stackage.org/lts/package/co-log\n[lts-ps]: http://stackage.org/lts/package/co-log-polysemy\n[lts-core]: http://stackage.org/lts/package/co-log-core\n[nightly-img]: http://stackage.org/package/co-log/badge/nightly\n[nightly-img-ps]: http://stackage.org/package/co-log-polysemy/badge/nightly\n[nightly-img-core]: http://stackage.org/package/co-log-core/badge/nightly\n[nightly]: http://stackage.org/nightly/package/co-log\n[nightly-ps]: http://stackage.org/nightly/package/co-log-polysemy\n[nightly-core]: http://stackage.org/nightly/package/co-log-core\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fco-log%2Fco-log-benchmarks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fco-log%2Fco-log-benchmarks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fco-log%2Fco-log-benchmarks/lists"}