• Stars
    star
    281
  • Rank 146,146 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 3 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Automaticlly updated language performance banchmarks in visualization. Data source from debian's the computer language benchmakrs game.

Programming-Language-Benchmarks-Visualization

JIT Benchmarks Render Image Visitors

Benchmarks data & source codes come from the computer language benchmarks game.

This project relies on github actions and will be updated weekly with the latest data and render them into visualizations. In addition to images, you can also visit https://goodmanwen.github.io/Programming-Language-Benchmarks-Visualization/ for live demo.

For the author's interest, this project adds additional benchmarks for Python's jit interpreters such as Pypy and Pyston

This project relies to some extent on manual adjustments, so if you find that some items are inconsistent with the original ones, feel free to submit an issue.

Additional technical details

It is worth mentioning that this project is not designed to provide a rigorous performance test, but to provide an approximate reference for those who need it. Since comprehensive comparison tests are difficult to design and sometimes lacking scientific basis, you should always rely on the use case if you need a percice performance comparison.

Here is a supplementary note for those who want to know the technical details.

About "Time consumption"

This is a figure reflects the time efficiency directly. As an example if the C++/g++ is shown as 1x while C# .net is shown as 2x, which means that the latter took twice as long as the former in the testing programs overall according to The Benchmarks Game.

One scenario here is to consider how to avoid the effect of extreme values. Say a scenario that we have ten tests, and if the majority of them take less than 10 seconds, but one extreme item takes over 600 seconds, then the overall average elapsed time will depend mainly on this longest project, thus cutting the impact of other projects and that's what we don't expect. Hence in this project the final data is weighted among all test items, followed the following formula generally:

Where ฮด indicates standard deviation, r indicates weight, V indicates final output, L is a constant.

It is designed with the idea that when the overall execution time of all languages in a particular test item is longer than others, it will be given a relatively small weight to avoid affecting other tests. Also due to the different degrees of dispersion, the variance differences between items could be very large, we don't want the weights of the different items to be too different, but we want them all to be at least in the same order of magnitude. After the adjusting of these formulas, the difference in the contribution of different items to the total elapsed time will between 1 to 3 times.

About "Weighted by time and memory"

Since raw data provides not only the execution time but also the memory consumption, we can argue that if a language is "a language with good efficient" then it needs not only good time efficiency, but also good space efficiency, hence this composite sort was born.

Its sorting logic is very simple, we sort the time and memory usage separately then we take the average of them to get the final result. Considering that most people are more concerned about time efficiency than spatial efficiency, I simply set the weighting ratio of the two to 80% to 20%.

About the data source and update policy

All the data used for testing was obtained from The Benchmarks Game (except to the two we run on our own), the fastest record for each language in each test will be taken. The update frequency is once a week, we ensure up-to-date data via web access.

About Pypy and Pyston

See python-extension/README.md

More Repositories

1

GoodManWEN.github.io

๐Ÿ“• A website simulating linux system's GUI, using theme of Deepin distro. ็ฝ‘้กตๆจกๆ‹ŸๆกŒ้ข
Vue
1,059
star
2

cx_Oracle_async

A very simple asynchronous wrapper that allows you to get access to the Oracle database in asyncio programs.
Python
39
star
3

fastapi-queue

A task queue based on redis that can serve as a peak shaver and protect your app.
Python
38
star
4

ThreadPoolExecutorPlus

A fully replaceable executor that makes it possible to reuse idle threads and shrink thread list when there's no heavy load.
Python
23
star
5

crossbow-manga

ๅพˆ้…ท็š„ๅฎžๆ—ถๆผซ็”ป็ฟป่ฏ‘ๅทฅๅ…ทใ€‚
Vue
15
star
6

py-fnvhash-c

Python FNV hash implementation based on cython, to give you an alternative high speed choice.
C
11
star
7

nazobase

NAZOrip basement where deposits some easy functions for Vapoursynth.
Python
7
star
8

ComparePictureOnline

Comparing picture quality online
JavaScript
7
star
9

vuetify-tailwind-animate-starter

A production ready template with essential tools.
JavaScript
6
star
10

aiohttp-jwtplus

Added a post router for improving security level of SPAs && auto refresh secrets.
Python
5
star
11

StockPriceMonitor

Push to mobile device via websocket when event triggered. Based on aiohttp
Python
5
star
12

pipeit

Syntax suger for python's functional programming as Unix pipes.
Python
5
star
13

oracle-client-action

GitHub Action to setup a Oracle database instant client.
Shell
4
star
14

aioredlock-py

Secure and efficient distributed locks (Radisson like) implemetation
Python
2
star
15

SaveTheSpire

A save editor for the game Slay the Spire
Python
2
star
16

aiohttp-debugmode

Run aiohttp server in subprocess ,automatically reload while dependencies/statics modified , debugtoolbar included.
Python
2
star
17

simple_sic_sicxe_assembler

A simple SIC & SIC/XE assembler implement with c++
C++
1
star
18

GOUP25-7640

Vue
1
star