Skip to content

Instantly share code, notes, and snippets.

View nalimilan's full-sized avatar

Milan Bouchet-Valat nalimilan

View GitHub Profile
$ time make test JULIA_CPU_CORES=1
JULIA test/all
* linalg/triangular in 432.60 seconds, maxrss 1354.71 MB
* linalg/qr in 74.89 seconds, maxrss 1529.75 MB
* linalg/dense in 70.00 seconds, maxrss 1631.83 MB
* linalg/matmul in 40.07 seconds, maxrss 1701.44 MB
* linalg/schur in 17.09 seconds, maxrss 1702.00 MB
* linalg/special in 10.75 seconds, maxrss 1702.00 MB
* linalg/eigen in 5.90 seconds, maxrss 1709.28 MB
[milan@milan julia]$ time make test JULIA_CPU_CORES=1
JULIA test/all
* linalg/triangular in 788.01 seconds, maxrss 750.01 MB
* linalg/qr in 133.74 seconds, maxrss 805.48 MB
* linalg/dense in 96.28 seconds, maxrss 867.33 MB
* linalg/matmul in 46.61 seconds, maxrss 885.41 MB
* linalg/schur in 21.33 seconds, maxrss 892.68 MB
* linalg/special in 20.82 seconds, maxrss 902.05 MB
* linalg/eigen in 10.86 seconds, maxrss 909.84 MB
* linalg/bunchkaufman in 5.26 seconds, maxrss 910.35 MB
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv) {
int A[1000000];
int B[1000000];
int i = 1000000;
int j = 1000000;
immutable Zip2Same{I1, I2} # <: AbstractZipIterator
same::Bool
a::I1
b::I2
end
zipsame(a, b) = Zip2Same(typeof(a)==typeof(b) && a==b, a, b)
Base.length(z::Zip2Same) = z.same ? length(z.a) : min(length(z.a), length(z.b))
Base.eltype{I1,I2}(::Type{Zip2Same{I1,I2}}) = Tuple{eltype(I1), eltype(I2)}
@inline Base.start(z::Zip2Same) = z.same ? (s = start(z.a); (s,s::typeof(start(z.b)))) : (start(z.a), start(z.b))
$ time make test JULIA_CPU_CORES=1
JULIA test/all
* linalg/triangular in 568.94 seconds, maxrss 1942.53 MB
* linalg/qr in 77.76 seconds, maxrss 2191.19 MB
* linalg/dense in 43.67 seconds, maxrss 2224.02 MB
* linalg/matmul in 29.29 seconds, maxrss 2284.09 MB
* linalg/schur in 12.09 seconds, maxrss 2300.77 MB
* linalg/special in 5.23 seconds, maxrss 2316.80 MB
* linalg/eigen in 38.01 seconds, maxrss 2347.16 MB
* linalg/bunchkaufman in 23.86 seconds, maxrss 2358.98 MB
make test JULIA_CPU_CORES=1
JULIA test/all
* linalg/triangular in 584.26 seconds, maxrss 923.37 MB
* linalg/qr in 77.82 seconds, maxrss 1028.33 MB
* linalg/dense in 40.51 seconds, maxrss 1073.18 MB
* linalg/matmul in 27.55 seconds, maxrss 1106.57 MB
* linalg/schur in 10.25 seconds, maxrss 1118.80 MB
* linalg/special in 4.78 seconds, maxrss 1124.21 MB
* linalg/eigen in 34.91 seconds, maxrss 1166.86 MB
* linalg/bunchkaufman in 20.86 seconds, maxrss 1178.17 MB
using DataFrames,DataFramesMeta, FreqTables
n=1000_000
y=ASCIIString[string("id",i) for i in rand(1:10,n)];
x=rand(1:10,n);
@time pda=PooledDataArray(y,UInt8);
@time f=freqtable(x);
@time f=freqtable(y);
@time f=freqtable(pda);
@time f=freqtable(x, pda);
using NullableArrays
@inline function f1{S1, S2}(x::Nullable{S1}, y::Nullable{S2})
if isbits(S1) & isbits(S2)
Nullable{Base.promote_op(+, S1, S2)}(x.value + y.value, x.isnull | y.isnull)
else
error()
end
end
function sumequals{T}(A::AbstractArray{Int}, d::Dict{T, Int}, v::T)
n = 0
@inbounds for x in A
n += get(d, v, 0) == x
end
n
end
A = repeat(1:5, outer=1000)
d = Dict("A"=>1, "B"=>2, "C"=>3)
broadcast_fuse(types::Type, f) = f
broadcast_fuse(types::Type, f, fs...) = x -> f(broadcast_fuse(types, fs...)(x))
a(x) = x+1
b(x) = x*x
f1(x) = broadcast_fuse(Array, a, b)(x) # Needed so that the compiler treats anonymous function as const
@code_warntype f1(1)
@code_native f1(1)