Skip to content

Instantly share code, notes, and snippets.

View khaledmdiab's full-sized avatar

Khaled Diab khaledmdiab

View GitHub Profile
@khaledmdiab
khaledmdiab / pdict.py
Last active August 29, 2015 14:22 — forked from mavc/pdict.py
'''
Created on 2011-10-09
Modified Python Recipe: http://code.activestate.com/recipes/522995/
@author: mavc
'''
from heapq import heapify, heappop, heappush
__all__ = ['PriorityDict']

Latency numbers every programmer should know

L1 cache reference ......................... 0.5 ns
Branch mispredict ............................ 5 ns
L2 cache reference ........................... 7 ns
Mutex lock/unlock ........................... 25 ns
Main memory reference ...................... 100 ns             
Compress 1K bytes with Zippy ............. 3,000 ns  =   3 µs
Send 2K bytes over 1 Gbps network ....... 20,000 ns  =  20 µs
SSD random read ........................ 150,000 ns  = 150 µs

Read 1 MB sequentially from memory ..... 250,000 ns = 250 µs

@khaledmdiab
khaledmdiab / latency.txt
Last active August 29, 2015 14:22 — forked from jboner/latency.txt
Latency Comparison Numbers
--------------------------
L1 cache reference 0.5 ns
Branch mispredict 5 ns
L2 cache reference 7 ns 14x L1 cache
Mutex lock/unlock 25 ns
Main memory reference 100 ns 20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy 3,000 ns
Send 1K bytes over 1 Gbps network 10,000 ns 0.01 ms
Read 4K randomly from SSD* 150,000 ns 0.15 ms
@khaledmdiab
khaledmdiab / resources.md
Last active August 29, 2015 14:03
listing some important libraries/frameworks resources

Scala

  • Scalaz
  • Scalaz-stream
  • Scala + Akka
  • Scala Spray for http
  • ScalaTest + Scala
  • Google Guava: collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, and so forth.
  • Scala + Play (web development)
  • Scala + BlueEyes (web development https://github.com/jdegoes/blueeyes)
@khaledmdiab
khaledmdiab / inline_list.tex
Created April 8, 2014 08:14
write inline lists in latex
\usepackage{paralist} % for inline lists
\begin{inparaenum}[\itshape a\upshape)]
\item item 1
\item item 2
\end{inparaenum}.
% can use one of these options: \Alph, \alph, \Roman, \roman and \arabic.
% enumitem package can be used as well
@khaledmdiab
khaledmdiab / args.sh
Created November 23, 2013 17:42
parses command line arguments
#!/bin/bash
FILENAME=""
DIRNAME=""
while [ $# -gt 0 ];
do
case $1 in
(-h|--help) usage ;;
(-v|--version) version ;;
#!/bin/bash
bibtex2html -d -r kdiab_bibtex.bib
@khaledmdiab
khaledmdiab / commands.tex
Created August 30, 2013 23:51
some commands in Latex
% replace Require and Ensure with Input and Output, in algorithmic package
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
% superscript and subscript commands
\newcommand{\superscript}[1]{\ensuremath{^{\textrm{#1}}}}
\newcommand{\subscript}[1]{\ensuremath{_{\textrm{#1}}}}
% command to generate inline red comment
\newcommand{\RedComment}[1]{{\bf \color{red}{Comment: #1}}}