Time took Python json (Python version): 0.501879239018308
Time took cythonized Python json: 0.08349561202339828
Time took Python json (C version) : 0.05558486797963269
Time took ujson: 0.029640772991115227
import asyncio | |
import time | |
import random | |
async def coro(loop, idx): | |
# distribute coros homogenity along 10 seconds | |
# to get a homogeneous traffic. | |
await asyncio.sleep(idx % 10) | |
if loop.load() > 0.9: |
import asyncio | |
import time | |
async def coro(): | |
await asyncio.sleep(0) | |
async def main(loop, coros): | |
start = loop.time() | |
for i in range(coros): |
import aioredis | |
import asyncio | |
OPS = 100000 | |
async def main(loop): | |
conn = await aioredis.create_redis(('localhost', 6379)) | |
start = loop.time() | |
for i in range(OPS): | |
await conn.ping() |
package test; | |
import io.netty.bootstrap.Bootstrap; | |
import io.netty.buffer.ByteBuf; | |
import io.netty.channel.*; | |
import io.netty.channel.nio.NioEventLoopGroup; | |
import io.netty.channel.socket.SocketChannel; | |
import io.netty.channel.socket.nio.NioSocketChannel; | |
import java.nio.charset.Charset; | |
public class NettyTest { | |
public static void main(String[] args) throws Exception { |
import socket | |
import time | |
s = socket.socket( | |
socket.AF_INET, socket.SOCK_STREAM) | |
s.connect(("localhost", 6379)) | |
# give enought time to get the | |
# data plus the RST Package | |
time.sleep(1) |
var net = require('net'); | |
var sleep = require('sleep'); | |
var client = new net.Socket(); | |
client.connect(6379, '127.0.0.1', function() { | |
console.log('Connected'); | |
sleep.sleep(10); // wait for data and RST package | |
}); | |
client.on('data', function(data) { |
# Copyright (c) Twisted Matrix Laboratories. | |
# See LICENSE for details. | |
""" | |
An example client. Run simpleserv.py first before running this. | |
""" | |
from __future__ import print_function | |
from time import sleep |
The numbers claimed by this benchamark about Gevent [1] comparaed with the numbers got by Asyncio with the uvloop
and even with the default loop has left me a bit frozen. Ive repeated a few of them : gevent, asyncio, asyncio-uvloop and go for
the echo server and these are the numbers roughly:
For gevent
$ ./echo_client
685393 0.98KiB messages in 30 seconds
Latency: min 0.04ms; max 4.48ms; mean 0.126ms; std: 0.048ms (37.68%)
Latency distribution: 25% under 0.088ms; 50% under 0.122ms; 75% under 0.158ms; 90% under 0.182ms; 99% under 0.242ms; 99.99% under 0.91ms
class ImmutableRecord(object): | |
def __init__(self, name): | |
self.__name = name | |
@property | |
def name(self): | |
return self.__name | |
def __hash__(self): |