Giter VIP home page Giter VIP logo

http4s / frameworkbenchmarks Goto Github PK

View Code? Open in Web Editor NEW

This project forked from techempower/frameworkbenchmarks

0.0 2.0 0.0 265.67 MB

Source code for the framework benchmarking project

Home Page: http://www.techempower.com/benchmarks/

License: Other

Ruby 4.41% Shell 10.84% Makefile 0.16% C++ 3.28% CMake 0.30% Nginx 5.52% QMake 0.11% HTML 7.08% C 7.22% C# 11.40% PowerShell 1.72% Python 13.45% ASP 0.04% CSS 8.78% JavaScript 19.97% Clojure 2.73% Crystal 0.26% D 0.45% Dart 1.73% Elixir 0.55%

frameworkbenchmarks's Introduction

Build Status Documentation Status Issue Stats Issue Stats

This project provides representative performance measures across a wide field of web application frameworks. With much help from the community, coverage is quite broad and we are happy to broaden it further with contributions. The project presently includes frameworks on many languages including Go, Python, Java, Ruby, PHP, C#, Clojure, Groovy, Dart, JavaScript, Erlang, Haskell, Scala, Perl, Lua, C, and others. The current tests exercise plaintext responses, JSON seralization, database reads and writes via the object-relational mapper (ORM), collections, sorting, server-side templates, and XSS counter-measures. Future tests will exercise other components and greater computation.

Read more and see the results of our tests on Amazon EC2 and physical hardware. For descriptions of the test types that we run, see the test requirements section.

If you find yourself in a directory or file that you're not sure what the purpose is, checkout our file structure in our documenation, which will briefly explain the use of relevant directories and files.

Quick Start Guide

Get started developing quickly by utilizing vagrant with TFB. Git, Virtualbox and vagrant are required.

  1. Clone TFB.

     $ git clone https://github.com/TechEmpower/FrameworkBenchmarks.git
    
  2. Move into the vagrant-development directory.

     $ cd FrameworkBenchmarks/deployment/vagrant
    
  3. Turn on the VM (takes at least 20 minutes).

     $ vagrant up
    
  4. Enter the VM.

     $ vagrant ssh
    
  5. Move into the FrameworkBenchmarks directory in the vm.

     vagrant@TFB-all:~$ cd ~/FrameworkBenchmarks
    
  6. Run a test.

     vagrant@TFB-all:~/FrameworkBenchmarks$ tfb --mode verify --test beego
    

Note: In order to run the same test again the results (located at FrameworkBenchmarks/results) directory needs to be removed prior to running the test again. This directory is automatically added when tests are run. You can do this automatically by adding the --clean option to the test command. --clean-all will remove the results and installs directories.

Official Documentation

Our official documentation can be found at frameworkbenchmarks.readthedocs.org. If you find any errors or areas for improvement within the docs, feel free to either submit a pull request or issue at the documentation repository.

Contributing

The community has consistently helped in making these tests better, and we welcome any and all changes. Reviewing our contribution practices and guidelines will help to keep us all on the same page. The contribution guide can be found in the TFB documentation.

Join in the conversation at our Google Group, or chat with us on Freenode at #techempower-fwbm.

frameworkbenchmarks's People

Contributors

aschneider-techempower avatar ashawnbandy-te-tfb avatar ebramanti-techempower avatar fernandoacorreia avatar hamiltont avatar huntc avatar jaguililla avatar jyentechempower avatar knewmante avatar kppullin avatar ladymozzarella avatar lgratrix-techempower avatar lhotari avatar ludovic-gasc avatar malcolmevershed avatar marko-asplund avatar martin-g avatar methane avatar michaelhixson avatar msmith-techempower avatar natebrady23 avatar oberhamsi avatar pdonald avatar pfalls-techempower avatar pfalls1 avatar robfig avatar ssmith-techempower avatar valyala avatar yogthos avatar zane-techempower avatar

Watchers

 avatar  avatar

frameworkbenchmarks's Issues

Use ScalaTags

While We Will Need to Run Benchmarks on Both, Scalatags states that it has performance improvements over Twirl.

We should put these to the test and see if it improves rendering time at all. This is primarily for the fortunes test. We have the database configuration already being investigated, this is looking into the server-side HTML template component

Fortunes

Requirements

In this test, the framework's ORM is used to fetch all rows from a database table containing an unknown number of Unix fortune cookie messages (the table has 12 rows, but the code cannot have foreknowledge of the table's size). An additional fortune cookie message is inserted into the list at runtime and then the list is sorted by the message text. Finally, the list is delivered to the client using a server-side HTML template. The message text must be considered untrusted and properly escaped and the UTF-8 fortune messages must be rendered properly.

Whitespace is optional and may comply with the framework's best practices.

Our Results

8 16 32 64 128 256
9,211 17,371 35,716 52,744 55,188 55,674

Fortunes responses per second

Database Performance Improvements

On the recent run we had some rather odd performance on our database queries.

We run a HikariCP pool of 256, other run much smaller pools. Recommendation I found from HikariCP was

connections = ((core_count * 2) + effective_spindle_count)

Data Updates

Requirements Summary

This test exercises database writes. Each request is processed by fetching multiple rows from a simple database table, converting the rows to in-memory objects, modifying one attribute of each object in memory, updating each associated row in the database individually, and then serializing the list of objects as a JSON response. The test is run multiple times: testing 1, 5, 10, 15, and 20 updates per request. Note that the number of statements per request is twice the number of updates since each update is paired with one query to fetch the object. All tests are run at 256 concurrency

Our Results

1 5 10 15 20
40,261 12,733 4,525 670 137

This drastic scale-back with increasing updates is unique to us.

I will comment as I find more in the other performance categories.

This is the section in question

Paging @tpolecat

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.