Update README.md

pull/39/head
Ciro Spaciari 2022-11-08 10:19:34 -03:00 zatwierdzone przez GitHub
rodzic a1134dc914
commit 56a320c294
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
1 zmienionych plików z 8 dodań i 100 usunięć

108
README.md
Wyświetl plik

@ -27,113 +27,21 @@ This project aims to bring high performance PyPy3 web development and will bring
We created and adapt the full C API from [uNetworking/uWebSockets](https://github.com/uNetworking/uWebSockets) and integrate libuv powered fetch and file IO, this same C API is used by [Bun](https://bun.sh/)
<style>
.graph-label{
--black: #0b0a08;
--blue: #00a6e1;
--orange: #f89b4b;
--orange-light: #d4d3d2;
--monospace-font: "Fira Code", "Hack", "Source Code Pro", "SF Mono",
"Inconsolata", monospace;
--dark-border: rgba(200, 200, 25, 0.2);
--max-width: 1152px;
--system-font: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue",
sans-serif;
--horizontal-padding: 3rem;
--vertical-padding: 4rem;
--line-height: 1.4;
list-style-type: none;
--count: 3;
--primary: 70px;
--opposite: 100%;
box-sizing: border-box;
--level: calc(var(--amount) / var(--max));
--inverse: calc(1 / var(--level));
color: #fff;
font-variant-numeric: tabular-nums;
font-family: var(--monospace-font);
width: 100%;
text-align: center;
position: relative;
display: flex;
justify-content: center;
top: -22px;
}
.label-bottom{
top: unset;
color: gray;
bottom: calc(calc(200px * var(--level) * -1) + 20px);
}
.graph-bar{
--black: #0b0a08;
--blue: #00a6e1;
--orange: #f89b4b;
--orange-light: #d4d3d2;
--monospace-font: "Fira Code", "Hack", "Source Code Pro", "SF Mono",
"Inconsolata", monospace;
--dark-border: rgba(200, 200, 25, 0.2);
--max-width: 1152px;
--system-font: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue",
sans-serif;
--horizontal-padding: 3rem;
--vertical-padding: 4rem;
--line-height: 1.4;
color: #fbf0df;
list-style-type: none;
font-variant-numeric: tabular-nums;
font-family: var(--monospace-font);
--count: 3;
--level: calc(var(--amount) / var(--max));
--inverse: calc(1 / var(--level));
box-sizing: border-box;
--primary: 70px;
--opposite: 100%;
margin: 0 auto;
width: var(--primary);
position: relative;
height: calc(200px * var(--level));
background-color: #5d5986;
}
.socketify{
background-color: gray;
box-shadow: inset 1px 1px 3px #ccc6bb;
background-image: url(https://raw.githubusercontent.com/cirospaciari/socketify.py/main/misc/logo.png);
background-repeat: no-repeat;
background-size: 56px 48.8px;
background-position: 6px 20%;
}
</style>
## Benchmark
HTTP requests per second (Linux x64)
<div style="width: 100%;">
<div align="center" style="width: auto;background-color: #0a0800; border-radius:10px; display: inline-grid;grid-template-columns: 100px 100px 100px 100px; align-items: end;padding: 50px 30px;">
<div style="--amount: 124943; --max: 150000" class="socketify graph-bar">
<div class="graph-label">124,943</div>
<div class="graph-label label-bottom">socketify PyPy3</div>
</div>
<div style="--amount: 70877; --max: 150000" class="socketify graph-bar">
<div class="graph-label">70,877</div>
<div class="graph-label label-bottom">socketify Python3</div>
</div>
<div style="--amount: 30173; --max: 150000" class="graph-bar">
<div class="graph-label">30,173</div>
<div class="graph-label label-bottom">gunicorn Python3</div>
</div>
<div style="--amount: 17580; --max: 150000" class="graph-bar">
<div class="graph-label">17,580</div>
<div class="graph-label label-bottom">gunicorn PyPy3</div>
</div>
</div>
</div>
<br/>
| Framework | Requests/s | Runtime |
| ------------- | -------------: | :-------------: |
| socketify.py | 124,943 | PyPy3 |
| socketify.py | 70,877 | Python3 |
| uvicorn | 30,173 | Python3 |
| uvicorn | 17,580 | PyPy3 |
Runtime versions: PyPy3 7.3.9 and Python 3.10.7<br/>
Framework versions: gunicorn 20.1.0 + uvicorn 0.19.0, socketify alpha<br/>
Tested with ./http_load_test 40 127.0.0.1 8000 from [uSockets](https://github.com/uNetworking/uSockets)
Source code in [bench](https://github.com/cirospaciari/socketify.py/tree/main/bench)
> Today we have about 30% to 50% performance drop due to workarounds until we implement full integration with asyncio + libuv, so we will got even faster more info in [this issue](https://github.com/cirospaciari/socketify.py/issues/18)
## Install
For macOS x64 & Silicon, Linux x64, Windows