Skip to content

Instantly share code, notes, and snippets.

View amaembo's full-sized avatar

Tagir Valeev amaembo

View GitHub Profile
@amaembo
amaembo / RadixSort.java
Created October 22, 2015 05:55
Fast radix sort implementation for Java
/*
Refactored by Tagir Valeev
Original code taken from
https://raw.githubusercontent.com/gorset/radix/master/Radix.java
Below is the original copyright notice
--------------
Copyright 2011 Erik Gorset. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are
permitted provided that the following conditions are met:
import java.util.concurrent.TimeUnit;
import java.util.stream.*;
import java.util.*;
import org.openjdk.jmh.infra.Blackhole;
import org.openjdk.jmh.annotations.*;
@Warmup(iterations = 5, time = 500, timeUnit = TimeUnit.MILLISECONDS)
@Measurement(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
@BenchmarkMode(Mode.AverageTime)
JDK flatMap
Thread[ForkJoinPool.commonPool-worker-7,5,main]=156250
Thread[ForkJoinPool.commonPool-worker-4,5,main]=31250
Thread[ForkJoinPool.commonPool-worker-1,5,main]=125000
Thread[ForkJoinPool.commonPool-worker-6,5,main]=218750
Thread[main,5,main]=62500
Thread[ForkJoinPool.commonPool-worker-3,5,main]=125000
Thread[ForkJoinPool.commonPool-worker-2,5,main]=125000
Thread[ForkJoinPool.commonPool-worker-5,5,main]=156250
Holger's flatMap
import java.util.concurrent.TimeUnit;
import static java.util.stream.Collectors.*;
import java.util.stream.*;
import java.util.function.*;
import java.util.*;
import org.openjdk.jmh.infra.Blackhole;
import org.openjdk.jmh.annotations.*;
@Warmup(iterations = 5, time = 500, timeUnit = TimeUnit.MILLISECONDS)
@amaembo
amaembo / CountingTest.java
Created September 17, 2015 05:46
Counting collector test
import java.util.concurrent.TimeUnit;
import java.util.stream.*;
import static java.util.stream.Collectors.*;
import java.util.*;
import org.openjdk.jmh.infra.Blackhole;
import org.openjdk.jmh.annotations.*;
@Warmup(iterations = 5, time = 500, timeUnit = TimeUnit.MILLISECONDS)
@Measurement(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
@amaembo
amaembo / RecursionTest.java
Created September 11, 2015 11:57
Recursion test
public class RecursionTest {
static int count = 0;
public static void staticMethod() {
count++;
staticMethod();
}
public static void staticMethod(int a) {
count++;
import java.util.stream.Stream;
public class TestHashCode {
public static void main(String[] args) {
Stream.generate(Object::new).mapToInt(Object::hashCode).mapToObj(Integer::toHexString)
.limit(20).forEach(System.out::println);
}
}
tokens.stream().collect(() -> new ArrayList<String>(), (l, e) -> {
if(l.isEmpty() || !l.get(l.size()-1).toUpperCase().endsWith("STOP"))
l.add(e);
}, (l1, l2) -> {
if(l1.isEmpty() || !l1.get(l1.size()-1).toUpperCase().endsWith("STOP"))
l1.addAll(l2);
});
import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;
import org.openjdk.jmh.infra.Blackhole;
import org.openjdk.jmh.annotations.*;
@Warmup(iterations = 5, time = 1000, timeUnit = TimeUnit.MILLISECONDS)
@Measurement(iterations = 10, time = 1000, timeUnit = TimeUnit.MILLISECONDS)
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MICROSECONDS)
import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.MathContext;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.function.ToIntFunction;
import java.util.function.ToLongFunction;
import java.util.stream.Collector;
final class AverageLong {