Skip to content

Instantly share code, notes, and snippets.

@leventov
leventov / memory.txt
Created July 21, 2014 20:00
Results of "time vs memory" benchmark: https://github.com/OpenHFT/hftc/tree/25511ccb8dd1afd0c11cc2233f24bdd98ffdb108/benchmarks/time-vs-memory. Information about the runsite: Intel Sandy Bridge (2011), L1: 64 KB, L2: 256 KB, L3: 20 MB, 128 GB of RAM. Java8u5.
loadLevel collections overuseFactor
1 hftc 7.226
1 hftc 10.791
1 hftc 7.470
1 hftc 11.172
1 hftc 7.748
1 hftc 11.576
1 hftc 8.039
1 hftc 11.993
1 hftc 8.339
@leventov
leventov / analyze.py
Created September 4, 2014 23:53
См. http://habrahabr.ru/post/235689/. Инструкция по применению в первом комментарии
import json
MIN_STARS = 700
with open('{}.json'.format(MIN_STARS)) as json_file:
repos = json.load(json_file)
repos_by_language = {}
by_top = {}
for repo in repos:
package spoon.test;
import spoon.reflect.declaration.*;
import java.util.ArrayList;
import java.util.IntSummaryStatistics;
import java.util.TreeSet;
import java.util.function.Consumer;
import java.util.function.ToIntFunction;
@leventov
leventov / Hashing.java
Last active August 29, 2015 14:25
Zero-allocation-hashing benchmarks
package tests;
import com.google.common.hash.HashFunction;
import net.openhft.chronicle.hash.hashing.Accesses;
import net.openhft.chronicle.hash.hashing.Hasher;
import net.openhft.hashing.LongHashFunction;
import org.openjdk.jmh.annotations.*;
import java.util.concurrent.TimeUnit;
package tests;
import java.util.*;
import java.util.Map.Entry;
import java.util.concurrent.TimeUnit;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Fork;
import org.openjdk.jmh.annotations.Measurement;
@leventov
leventov / bios.s
Created December 13, 2011 21:56
lab4: protected mode with paging
.arch pentium4
.code16
.section .text
.org 0x100
_gdt: .quad 0
.byte 0xFF, 0xFF, 0, 0, 0xF, 0b10011010, 0b00001111, 0 # код
.byte 0xFF, 0xFF, 0, 0, 0xF, 0b10010000, 0b00001111, 0 # данные
.byte 0x00, 0x80, 0,0x80, 0xB, 0b10010010, 0b00000000, 0 # видео
@leventov
leventov / hash_table.py
Last active December 6, 2015 05:45
Proposed optimization for shift removal procedure in hash tables with linear probing. Inspired by https://github.com/apple/swift/blob/8d9ef80304d7b36e13619ea50e6e76f3ec9221ba/stdlib/public/core/HashedCollections.swift.gyb#L3221-L3279
# (Pseudocode)
def shift_distance(chain_end, base):
return (chain_end - base) & (capacity - 1)
def next(index):
return (index + 1) & (capacity - 1)
def prev(index):
@leventov
leventov / minmax.c
Last active December 10, 2015 18:48
-- minmax.h
float max_ss(float a, float b);
float min_ss(float a, float b);
double max_sd(double a, double b);
double min_sd(double a, double b);
float clamp_ss(float x, float mn, float mx);
double clamp_sd(double x, double mn, double mx);
@leventov
leventov / blur-core.hs
Last active December 12, 2015 06:38
blur.hs: inlining issue. Search `$wa2` in blur-core.hs to see details. See http://stackoverflow.com/questions/14748900/ghc-doesnt-perform-2-stage-partial-application-inlining
[1 of 1] Compiling Main ( blur.hs, blur.o )
==================== Simplified expression ====================
quoteExp
dim2St
(unpackCString#
" 2 4 5 4 2\
\ 4 9 12 9 4\
\ 5 12 15 12 5\
\ 4 9 12 9 4\
$ ghc -Odph -rtsopts -threaded -fno-liberate-case -funbox-strict-fields -funfolding-keeness-factor1000 -fllvm -optlo-O3 -fexpose-all-unfoldings -fsimpl-tick-factor=500 -ddump-simpl -dsuppress-all zip-columns.hs > z.hs