All Projects → globusdigital → logbench

globusdigital / logbench

Licence: BSD-3-Clause license
Structured JSON logging Go libraries benchmark

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to logbench

gobench
A benchmark framework based on Golang
Stars: ✭ 50 (+163.16%)
Mutual labels:  benchmark
join-order-benchmark
Join Order Benchmark (JOB)
Stars: ✭ 174 (+815.79%)
Mutual labels:  benchmark
stuff
All stuff in a single repo (tests, ideas, benchmarks)
Stars: ✭ 13 (-31.58%)
Mutual labels:  benchmark
nodemark
A modern benchmarking library for Node.js
Stars: ✭ 23 (+21.05%)
Mutual labels:  benchmark
arewefastyet
Nightly Benchmarks Project
Stars: ✭ 31 (+63.16%)
Mutual labels:  benchmark
mlgauge
A simple library to benchmark the performance of machine learning methods across different datasets.
Stars: ✭ 22 (+15.79%)
Mutual labels:  benchmark
micro-runner
Micro-Runner, a CLI playground for benchmarking your JavaScript code
Stars: ✭ 27 (+42.11%)
Mutual labels:  benchmark
criterion-compare-action
⚡️📊 Compare the performance of Rust project branches
Stars: ✭ 37 (+94.74%)
Mutual labels:  benchmark
language-benchmarks
A simple benchmark system for compiled and interpreted languages.
Stars: ✭ 21 (+10.53%)
Mutual labels:  benchmark
lua-vs-vimscript
A simple benchmark comparing Lua performance to Vimscript (because no one seems to care about these nowadays)
Stars: ✭ 32 (+68.42%)
Mutual labels:  benchmark
cache-bench
Explore the impact of virtual memory settings on caching efficiency on Linux systems under memory pressure
Stars: ✭ 25 (+31.58%)
Mutual labels:  benchmark
SDGym
Benchmarking synthetic data generation methods.
Stars: ✭ 177 (+831.58%)
Mutual labels:  benchmark
ipc benchmark
IPC benchmark on Linux
Stars: ✭ 55 (+189.47%)
Mutual labels:  benchmark
word-benchmarks
Benchmarks for intrinsic word embeddings evaluation.
Stars: ✭ 45 (+136.84%)
Mutual labels:  benchmark
goku
goku is a HTTP load testing application written in Rust
Stars: ✭ 29 (+52.63%)
Mutual labels:  benchmark
OptimisationAlgorithms
Searching global optima with firefly algorithm and solving traveling salesmen problem with genetic algorithm
Stars: ✭ 20 (+5.26%)
Mutual labels:  benchmark
web-benchmarks
A set of HTTP server benchmarks for Golang, node.js and Python with proper CPU utilization and database connection pooling.
Stars: ✭ 22 (+15.79%)
Mutual labels:  benchmark
compiler-benchmark
Benchmarks compilation speeds of different combinations of languages and compilers.
Stars: ✭ 93 (+389.47%)
Mutual labels:  benchmark
ExecutorBenchmark
No description or website provided.
Stars: ✭ 39 (+105.26%)
Mutual labels:  benchmark
PHP-Frameworks-Bench
Popular PHP Frameworks Benchmark.
Stars: ✭ 28 (+47.37%)
Mutual labels:  benchmark
GoReportCard Travis CI: build status Coverage Status

Go - Structured Logging Benchmark
by Magazine zum Globus

A structured JSON logging performance benchmark providing realistic performance metrics for the latest versions of:

Performance is measured by the following main criteria:

  • total alloc - Total size of allocated memory.
  • num-gc - Total number of GC cycles.
  • mallocs - Total number of allocated heap objects.
  • total pause - Total duration of GC pauses.
  • Average and total time of execution (by operation).

Benchmark Results i7-8569U @ 2.80GHz

Getting started

  1. Install the benchmark:
go get github.com/globusdigital/logbench
  1. Run it:
logbench -w 8 -t 1_000_000 -o_all -l zerolog
  • -w <num>: defines the number of concurrently writing goroutines.
  • -l <logger>: enables a logger. You can enable multiple loggers by specifying multiple flags: -l zerolog -l zap -l logrus.
  • -o <operation>: enables an operation. You can enable multiple operations by specifying multiple flags: -o info -o error -o info_with_3.
  • -t <num>: defines the number of logs to be written for each operation.
  • -o_all: enables all operations ignoring all specified -o flags
  • -memprof <path>: specifies the output file path for the memory profile (disabled when not set)
  • -mi <duration>: memory inspection interval

How-to

Adding a new logger to the benchmark

    1. Define the logger in a sub-package.
    1. Provide a Setup() benchmark.Setup function in your logger's sub-package.
    1. Implement all benchmark operations:
    • FnInfo func(msg string)
    • FnInfoFmt func(msg string, data int)
    • FnError func(msg string)
    • FnInfoWithErrorStack func(msg string, err error)
    • FnInfoWith3 func(msg string, fields *benchmark.Fields3)
    • FnInfoWith10 func(msg string, fields *benchmark.Fields10)
    • FnInfoWith10Exist func(msg string)
    1. Add your setup to setups.
    1. Run the tests with go test -v -race ./... and make sure everything's working.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].