Skip to content

Instantly share code, notes, and snippets.

View hyunsik's full-sized avatar
🏠
Working from home

Hyunsik Choi hyunsik

🏠
Working from home
View GitHub Profile
@hyunsik
hyunsik / gist:ef99bd8ada9ec7c7d29c
Last active February 6, 2019 14:05
Links for Rust
@hyunsik
hyunsik / twitter_ddl.sql
Created May 21, 2015 07:56
twitter schema
CREATE EXTERNAL TABLE tweets (
coordinates TEXT,
favorited BOOL,
truncated BOOL,
created_at TIMESTAMP,
id_str TEXT,
/*entrities RECORD (
urls ARRAY<TEXT>
)*/
in_reply_to_user_id_str TEXT,
@hyunsik
hyunsik / gist:a0ac79fa4421e0bd7ad2
Created April 17, 2015 11:35
Transmute struct to bytes
use std::mem;
#[repr(packed)]
struct S4 {
a: u8,
b: [u8; 3],
}
#[repr(packed)]
struct S5 {
@hyunsik
hyunsik / map_add_long_int_col_col.java
Last active August 29, 2016 03:03
Add primitive in vectorized processing model
map_add_long_int_col_col(int vec_num, long [] result, long [] col1,
int [] col2, int [] sel_vec) {
if (sel_vec == null) {
for (int i = 0; i = 0; i < vec_num; i++) {
result[i] = col1[i] + col2[i];
}
} else {
int sel_idx;
for (int i = 0; I = 0; i < vec_num; i++) {
sel_idx = sel_vec[i];
@hyunsik
hyunsik / sel_le_long_long_col_col.java
Created August 29, 2016 03:02
Select primitive in vectorized processing model
int sel_le_long_long_col_col(int vec_num, int [] res_sel_vec,
long [] col1, long [] col2, int [] sel_vec) {
int ret = 0;
if (sel_vec == null) {
for (int i = 0; i < vec_num; i++) {
if (col1[i] < col2[i]) {
res_sel_vec[ret++] = i
}
}
} else {
@hyunsik
hyunsik / unrolled.c
Created August 29, 2016 02:33
unrolled for-loop
for (i = 0; i < 128; i+=4) {
a[i] = b[i] + c[i];
a[i+1] = b[i+1] + c[i+1];
a[i+2] = b[i+2] + c[i+2];
a[i+3] = b[i+3] + c[i+3];
}
@hyunsik
hyunsik / unoptimized.c
Created August 29, 2016 02:32
Unoptimized for-loop
for (i = 0; i < 128; i++) {
a[i] = b[i] + c[i];
}
@hyunsik
hyunsik / uselect_bt_void_int_bat_int_const.c
Created August 29, 2016 02:30
A primitive example of column-at-a-time model
int uselect_bt_void_int_bat_int_const(oid *output, int *input, int value, int size) {
oid i;
int j = 0;
for (i = 0; i < size; i++) {
if (input[i] > value) {
output[j++] = i;
}
}
return j;
}
@hyunsik
hyunsik / tpch_q1.sql
Created August 29, 2016 02:27
TPC-H Q1
select
l_returnflag, l_linestatus, sum(l_quantity) as sum_qty,
sum(l_extendedprice) as sum_base_price,
sum(l_extendedprice*(1-l_discount)) as sum_disc_price,
sum(l_extendedprice*(1-l_discount)*(1+l_tax)) as sum_charge,
avg(l_quantity) as avg_qty,
avg(l_extendedprice) as avg_price, avg(l_discount) as avg_disc,
count(*) as count_order
from
lineitem
@hyunsik
hyunsik / latency_comparison_numbers.txt
Created August 29, 2016 02:21
Latency Comparison Numbers
Latency Comparison Numbers
--------------------------
execute typical instruction 1 ns 1/1,000,000,000 sec
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