All Projects → fperf → Fperf

fperf / Fperf

Licence: apache-2.0
Framework of performance testing

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Fperf

Xrautomatedtests
XRAutomatedTests is where you can find functional, graphics, performance, and other types of automated tests for your XR Unity development.
Stars: ✭ 77 (-75.63%)
Mutual labels:  performance, benchmark
Arewefastyet
NOT MAINTAINED ANYMORE! New project is located on https://github.com/mozilla-frontend-infra/js-perf-dashboard -- AreWeFastYet is a set of tools used for benchmarking the major browser's JavaScript virtual machines against each other, as well as reporting the results on a website as insightful graphs showing the evolution of performance over time.
Stars: ✭ 119 (-62.34%)
Mutual labels:  performance, benchmark
Karma Benchmark
A Karma plugin to run Benchmark.js over multiple browsers with CI compatible output.
Stars: ✭ 88 (-72.15%)
Mutual labels:  performance, benchmark
Sysbench Docker Hpe
Sysbench Dockerfiles and Scripts for VM and Container benchmarking MySQL
Stars: ✭ 14 (-95.57%)
Mutual labels:  performance, benchmark
Sltbench
C++ benchmark tool. Practical, stable and fast performance testing framework.
Stars: ✭ 137 (-56.65%)
Mutual labels:  performance, benchmark
Gl vs vk
Comparison of OpenGL and Vulkan API in terms of performance.
Stars: ✭ 65 (-79.43%)
Mutual labels:  performance, benchmark
Phoronix Test Suite
The Phoronix Test Suite open-source, cross-platform automated testing/benchmarking software.
Stars: ✭ 1,339 (+323.73%)
Mutual labels:  performance, benchmark
Boomer
A better load generator for locust, written in golang.
Stars: ✭ 734 (+132.28%)
Mutual labels:  performance, benchmark
Gatling Dubbo
A gatling plugin for running load tests on Apache Dubbo(https://github.com/apache/incubator-dubbo) and other java ecosystem.
Stars: ✭ 131 (-58.54%)
Mutual labels:  performance, benchmark
P2plab
performance benchmark infrastructure for IPLD DAGs
Stars: ✭ 126 (-60.13%)
Mutual labels:  performance, benchmark
Bench Scripts
A compilation of Linux server benchmarking scripts.
Stars: ✭ 873 (+176.27%)
Mutual labels:  performance, benchmark
Are We Fast Yet
Are We Fast Yet? Comparing Language Implementations with Objects, Closures, and Arrays
Stars: ✭ 161 (-49.05%)
Mutual labels:  performance, benchmark
Sequelize Benchmark
Benchmarks for sequelize
Stars: ✭ 8 (-97.47%)
Mutual labels:  performance, benchmark
Jsperf.com
jsperf.com v2. https://github.com/h5bp/lazyweb-requests/issues/174
Stars: ✭ 1,178 (+272.78%)
Mutual labels:  performance, benchmark
Benchmarkdotnet
Powerful .NET library for benchmarking
Stars: ✭ 7,138 (+2158.86%)
Mutual labels:  performance, benchmark
Ezfio
Simple NVME/SAS/SATA SSD test framework for Linux and Windows
Stars: ✭ 91 (-71.2%)
Mutual labels:  performance, benchmark
Frameworkbenchmarks
Source for the TechEmpower Framework Benchmarks project
Stars: ✭ 6,157 (+1848.42%)
Mutual labels:  performance, benchmark
Pytest Benchmark
py.test fixture for benchmarking code
Stars: ✭ 730 (+131.01%)
Mutual labels:  performance, benchmark
Crossplatformdisktest
Windows, macOS and Android storage (HDD, SSD, RAM) speed testing/performance benchmarking app
Stars: ✭ 123 (-61.08%)
Mutual labels:  performance, benchmark
Kubestone
Performance benchmarks for Kubernetes
Stars: ✭ 159 (-49.68%)
Mutual labels:  performance, benchmark

Framework of performance testing

Build Status Go Report Card

fperf is a powerful and flexible framework which allows you to develop your own benchmark tools so much easy. You create the client and send requests, fperf do the concurrency and statistics, then give you a report about qps and latency. Any one can create powerful performance benchmark tools by fperf with only some knowledge about how to send a request.

Build fperf with the builtin clients

go install ./bin/fperf 

or use fperf-build

go install ./bin/fperf-build

fperf-build ./clients/*

Quick Start

If you can not wait to run fperf to see how it works, follow the quickstart here.

Customize client

You can build your own client based on fperf framework. A client in fact is a client that implement the fperf.Client or to say more precisely fperf.UnaryClient or fperf.StreamClient.

An unary client is a client to send requests. It works in request-reply model. For example, HTTP benchmark client is an unary client. See http client.

type Client interface {
        Dial(addr string) error
}
type UnaryClient interface {
        Client
        Request() error
}

A stream client is a client to send and receive data by stream or datagram. TCP and UDP nomarlly can be implemented as stream client. Google's grpc has a stream mode and can be used as a stream client. See grpc_testing

type StreamClient interface {
	Client
	CreateStream(ctx context.Context) (Stream, error)
}
type Stream interface {
	DoSend() error
	DoRecv() error
}

Three steps to create your own client

1.Create the "NewClient" function

package demo

import (
	"fmt"
	"github.com/fperf/fperf"
	"time"
)

type demoClient struct{}

func newDemoClient(flag *fperf.FlagSet) fperf.Client {
	return &demoClient{}
}

2.Implement the UnaryClient or StreamClient

func (c *demoClient) Dial(addr string) error {
	fmt.Println("Dial to", addr)
	return nil
}

func (c *demoClient) Request() error {
	time.Sleep(100 * time.Millisecond)
	return nil
}

3.Register to fperf

func init() {
	fperf.Register("demo", dewDemoClient, "This is a demo client discription")
}

Building custom clients

You client should be in the same workspace(same $GOPATH) with fperf.

Using fperf-build

fperf-build is a tool to build custom clients. It accepts a path of your package and create file autoimport.go which imports all your clients when build fperf, then cleanup the generated files after buiding.

Installing from source

go install ./bin/fperf-build

or installing from github

go get github.com/fperf/fperf/bin/fperf-build
fperf-build [packages]

packages can be go importpath(see go help importpath) or absolute path to your package

For example, build all clients alang with fperf(using relative importpath)

fperf-build ./clients/* 

Run benchmark

Options

Usage: ./fperf [options] <client>
options:
  -N int
        number of request per goroutine
  -async
        send and recv in seperate goroutines
  -burst int
        burst a number of request, use with -async=true
  -connection int
        number of connection (default 1)
  -cpu int
        set the GOMAXPROCS, use go default if 0
  -delay duration
        wait delay time before send the next request
  -goroutine int
        number of goroutines per stream (default 1)
  -recv
        perform recv action (default true)
  -send
        perform send action (default true)
  -server string
        address of the target server (default "127.0.0.1:8804")
  -stream int
        number of streams per connection (default 1)
  -tick duration
        interval between statistics (default 2s)
  -type string
        set the call type:unary, stream or auto. default is auto (default "auto")
clients:
 http   : HTTP performanch benchmark client
 mqtt-publish   : benchmark of mqtt publish
 redis  : redis performance benchmark

Draw live graph with grafana

TODO export data into influxdb and draw graph with grafana

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].