Skip to content

Instantly share code, notes, and snippets.

Avatar

Didier Spezia dspezia

View GitHub Profile
@dspezia
dspezia / Run.txt
Created Apr 27, 2012
Mysterious Java performance
View Run.txt
$ g++ --version
g++ (SUSE Linux) 4.5.0 20100604 [gcc-4_5-branch revision 160292]
$ g++ -std=c++0x -O2 main.cc
$ time ./a.out
real 0m33.838s
user 0m30.784s
sys 0m2.930s
@dspezia
dspezia / C++03
Created Apr 25, 2012
Simulate Redis set/zset intersection
View C++03
#include <iostream>
#include <tr1/unordered_map>
#include <map>
#include <set>
// 37 ms per intersection for Redis
// 29 ms per intersection for this C++ program
using namespace std;
using namespace std::tr1;
@dspezia
dspezia / Example log
Created Apr 9, 2012
Assessing pending activity of a Redis server
View Example log
> ~/tcp_redis_monitor.py 6379
Timestamp Nb TX bytes RX bytes TX RMA RX RMA
1333983822.943 1 0 0 0.000 0.000
1333983823.193 1 0 0 0.000 0.000
1333983824.194 1 0 0 0.000 0.000
1333983825.195 1 0 0 0.000 0.000
1333983826.196 1 0 0 0.000 0.000
@dspezia
dspezia / redis3.py
Created Apr 1, 2012
hmget memory issue
View redis3.py
#!/usr/bin/env python
# ---------------------------------------------------------
import redis
POOL = redis.ConnectionPool(host='localhost',port=6379,db=0)
# ---------------------------------------------------------
def main():
@dspezia
dspezia / mytest.c
Created Apr 1, 2012
Example of async hiredis with libevent
View mytest.c
/*
Based on code provided by Sebastian Sito in stackoverflow question:
http://stackoverflow.com/questions/9958589/async-redis-pooling-using-lib-event
*/
#include <stdlib.h>
#include <event2/event.h>
#include <event2/http.h>
#include <event2/buffer.h>
#include <hiredis/hiredis.h>
@dspezia
dspezia / Makefile
Created Feb 23, 2012
Example of pipelining with hiredis
View Makefile
OBJ = genload.o
BINS = genload
CC=g++
OPTIMIZATION?=-O3
CFLAGS?=$(OPTIMIZATION) $(ARCH) $(PROF) -I ../hiredis
CCLINK?=-pthread
LDFLAGS?=-L../hiredis -lhiredis -lm
OBJ = example.o
@dspezia
dspezia / Sequencer.cc
Created Feb 9, 2012
Example of double queue pattern
View Sequencer.cc
/***************************************************************************
* Copyright (C) 2008 by Amadeus *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
@dspezia
dspezia / gist:1771342
Created Feb 8, 2012
Example of Redis zset + key iteration + pipelining in Python
View gist:1771342
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ----------------------------------------------------
import redis, random
POOL = redis.ConnectionPool(host='localhost', port=6379, db=0)
NUSERS = 10000
NTAGS = 500
@dspezia
dspezia / gist:1640804
Created Jan 19, 2012
Annotated zslGetRank
View gist:1640804
Dump of assembler code for function zslGetRank:
; Function prolog: save registers on the stack
0x0000000000427fd0 <+0>: push %r14
0x0000000000427fd2 <+2>: push %r13
0x0000000000427fd4 <+4>: mov %rsi,%r13
0x0000000000427fd7 <+7>: push %r12
0x0000000000427fd9 <+9>: push %rbp
0x0000000000427fda <+10>: push %rbx
0x0000000000427fdb <+11>: sub $0x10,%rsp
@dspezia
dspezia / tst.cpp
Created Dec 10, 2011
Variadic rpush C++ hiredis example
View tst.cpp
#include <iostream>
#include <vector>
#include <string>
#include <stdexcept>
#include <hiredis.h>
using namespace std;
You can’t perform that action at this time.