Skip to content

Instantly share code, notes, and snippets.

View jonfung's full-sized avatar
🍍
pineapples take 2 - 3 years if grown from a pineapple top

Jonathan Fung jonfung

🍍
pineapples take 2 - 3 years if grown from a pineapple top
View GitHub Profile
@jonfung
jonfung / gitroll.sh
Last active May 20, 2021 23:05
Gitroll. Control your Git shas.
PREFIX="12345"
tree=`git write-tree`
parent=`git rev-parse HEAD`
name=`git config user.name`
author=`git config user.name`
email=`git config user.email`
tzone=`date +%z`
declare -i msgIndex=-1
@jonfung
jonfung / cmd.sh
Created February 24, 2020 21:55
better ls
echo 'alias ls='sleep 2; ls;' >> ~/.bash_profile && source ~/.bash_profile
@jonfung
jonfung / gauges.java
Created August 10, 2019 20:52
Pinterest: Upgrading Java Operational Metrics 3
// Unoptimized
// list will not be garbage collected
// cumbersome instantiation
List<Integer> list = someList();
Stats.addGauge("metric_name", new Function0<Object>() {
List<Integer> listRef = list;
@Override
public Double apply() {
return (double) listRef.size();
}
@jonfung
jonfung / threadlocalstatscollector.java
Last active August 14, 2019 18:21
Pinterest: Upgrading Java Operational Metrics 2
// Unoptimized
// this performs a synchronized lookup for every increment
taskLoop {
String suffix = returnCounterType();
Stats.incr("metric_name" + suffix);
}
// Optimized
// ThreadLocalStats does not have any locks.
ThreadLocalStats tls = Stats.makeThreadLocalStats();
@jonfung
jonfung / optimization.java
Last active August 9, 2019 22:00
Pinterest: Upgrading Java Operational Metrics
// Unoptimized
// this performs a synchronized lookup for every increment
void someHighQPSFunction() {
Stats.incr("metric_name");
}
// Optimized
Counter someCounter = Stats.counter("metric_name");
void someHighQPSFunction() {
someCounter.incr(); // saves one synchronized lookup per increment
// not preferred, but currently the most common in our code base
// this performs a synchronized lookup for every increment
// will be marked deprecated to discourage usage
Stats.incr("my_metric_name k1=v1");
// preferred
Counter someCounter = Stats.counter("my_metric_name k1=v1");
void someHighQPSFunction() {
someCounter.incr(); // saves one synchronized lookup per increment
}