Skip to content

Instantly share code, notes, and snippets.

View Ahuge's full-sized avatar
🏡
Remote

Alex Hughes Ahuge

🏡
Remote
View GitHub Profile
@jboner
jboner / latency.txt
Last active June 11, 2024 02:37
Latency Numbers Every Programmer Should Know
Latency Comparison Numbers (~2012)
----------------------------------
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 3 us
Send 1K bytes over 1 Gbps network 10,000 ns 10 us
Read 4K randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD
@marianposaceanu
marianposaceanu / latency.md
Created May 31, 2012 10:18 — forked from jboner/latency.txt
Latency numbers every programmer should know

CPU

  • L1 cache reference 0.5 ns
  • Branch mispredict 5 ns (on a bad CPU architecture you're pretty much screwed)
  • L2 cache reference 7 ns
  • Mutex lock/unlock 25 ns
  • Main memory reference 100 ns
  • Compress 1K bytes with Zippy 3,000 ns
  • Send 2K bytes over 1 Gbps network 20,000 ns
  • Read 1 MB sequentially from memory 250,000 ns
@jhclark
jhclark / latency.txt
Created May 31, 2012 19:58 — forked from jboner/latency.txt
Latency numbers every programmer should know
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 1 MB sequentially from memory 250,000 ns 0.25 ms
Round trip within same datacenter 500,000 ns 0.5 ms
Read 1 MB sequentially from SSD 1,000,000 ns 1 ms 4X memory
@leibge
leibge / generate-ssl-files.sh
Last active October 11, 2019 05:58
Non-interactive shell script for generating SSL files using OpenSSL. I use this as part of a build script for an application that runs in Jetty. Some of the variable names and options have been changed to make them more generic.
#!/bin/sh
# -------------------------------------------------------
# Run this script to create SSL certificates and files.
# These will be generated into the "ssl" subdirectory of
# the folder where this script file is located.
# -------------------------------------------------------
#
@fpsunflower
fpsunflower / nanoexr.cpp
Last active December 9, 2021 14:42
Tiny OpenEXR output
// c++ -o nanoexr nanoexr.cpp && ./nanoexr /tmp/foo.exr
#include <cstdio>
// writes a tiled OpenEXR file from a float RGB buffer
struct Exr {
FILE* f; enum{TS=64}; ~Exr() { fclose(f); }
void B(unsigned char i) { fputc(i,f); }
void I(unsigned int i) { fwrite(&i,1,4,f); }
void L(unsigned long long i) { fwrite(&i,1,8,f); }
void F(float x) { fwrite(&x,1,4,f); }
@fz6
fz6 / dah_generator.py
Created May 21, 2015 18:44
DevOps Against Humanity Generator
# wget https://raw.githubusercontent.com/bridgetkromhout/devops-against-humanity/b824d328392ea5c27026f917653e35da1b12b0f8/cards-DevOpsAgainstHumanity.csv
WHITE_CARDS = []
BLACK_CARDS = []
FILL_ME_IN = "_____"
from random import choice
def load():
global WHITE_CARDS
# Grant-ComputerJoinPermission.ps1
# Written by Bill Stewart (bstewart@iname.com)
#
# Grants an AD identity the ability to join one or more computers to the
# domain.
#requires -version 2
<#
.SYNOPSIS
@Ahuge
Ahuge / Example Signals Multithreaded.py
Last active November 5, 2020 05:57
Basic Example of using a pure python Signal/Slot implementation talking between threads. Aims to feel like Qt's Signals.
# ------------------------------------------------------------------------------------------------------------ #
# --------------------------------------------- Signal Library ----------------------------------------------- #
# ------------------------------------------------------------------------------------------------------------ #
import weakref
class Signal(object):
def __init__(self, *types):
self._call_types = types
self._connections = set()
@Ahuge
Ahuge / Default_Value_Decorator.py
Created December 6, 2016 22:06
Default Value decorator.This allows you to optionally pass a "default" value into your function and have it returned in the case of a falsey value returned.
def keep_signature(input_function):
def to(function):
f_name = input_function.func_code.co_name
args = input_function.func_code.co_varnames[:input_function.func_code.co_argcount]
kw_list = input_function.func_defaults or []
kwargs = args[-len(kw_list):] if len(kw_list) else [] # because kwargs are last
args = args[:len(kw_list)] if len(kw_list) else args
d_kwargs = {}
for k, v in zip(kwargs, kw_list):
d_kwargs[k] = v
using UnityEngine;
using UnityEditor;
using UnityEditor.SceneManagement;
using System.Collections.Generic;
using System.IO;
// Scene selection