Performance tips#
using DataFrames
using BenchmarkTools
using CategoricalArrays
using PooledArrays
using Random
Access by column number is faster than by name#
x = DataFrame(rand(5, 1000), :auto)
@btime $x[!, 500]; ## Faster
3.095 ns (0 allocations: 0 bytes)
@btime $x.x500; ## Slower
10.862 ns (0 allocations: 0 bytes)
When working with data DataFrame use barrier functions or type annotation#
function f_bad() ## this function will be slow
Random.seed!(1)
x = DataFrame(rand(1000000, 2), :auto)
y, z = x[!, 1], x[!, 2]
p = 0.0
for i in 1:nrow(x)
p += y[i] * z[i]
end
p
end
@btime f_bad();
# if you run @code_warntype f_bad() then you notice
# that Julia does not know column types of `DataFrame`
97.197 ms (5999012 allocations: 122.06 MiB)
solution 1 is to use barrier function (it should be possible to use it in almost any code) for the calculation. You will notice much less memopry allocations and faster performance.
function f_inner(y, z)
p = 0.0
for i in eachindex(y, z)
p += y[i] * z[i]
end
p
end
function f_barrier()
Random.seed!(1)
x = DataFrame(rand(1000000, 2), :auto)
f_inner(x[!, 1], x[!, 2])
end
@btime f_barrier();
4.133 ms (34 allocations: 30.52 MiB)
or use inbuilt function if possible
using LinearAlgebra
function f_inbuilt()
Random.seed!(1)
x = DataFrame(rand(1000000, 2), :auto)
dot(x[!, 1], x[!, 2])
end
@btime f_inbuilt();
3.480 ms (34 allocations: 30.52 MiB)
solution 2 is to provide the types of extracted columns. However, there are cases in which you will not know these types.
function f_typed()
Random.seed!(1)
x = DataFrame(rand(1000000, 2), :auto)
y::Vector{Float64}, z::Vector{Float64} = x[!, 1], x[!, 2]
p = 0.0
for i in 1:nrow(x)
p += y[i] * z[i]
end
p
end
@btime f_typed();
4.135 ms (34 allocations: 30.52 MiB)
In general for tall and narrow tables it is often useful to use Tables.rowtable
, Tables.columntable
or Tables.namedtupleiterator
for intermediate processing of data in a type-stable way.
Consider using delayed DataFrame
creation technique#
also notice the difference in performance between copying vs non-copying data frame creation
function f1()
x = DataFrame([Vector{Float64}(undef, 10^4) for i in 1:100], :auto, copycols=false) ## we work with a DataFrame directly
for c in 1:ncol(x)
d = x[!, c]
for r in 1:nrow(x)
d[r] = rand()
end
end
x
end
function f1a()
x = DataFrame([Vector{Float64}(undef, 10^4) for i in 1:100], :auto) ## we work with a DataFrame directly
for c in 1:ncol(x)
d = x[!, c]
for r in 1:nrow(x)
d[r] = rand()
end
end
x
end
function f2()
x = Vector{Any}(undef, 100)
for c in 1:length(x)
d = Vector{Float64}(undef, 10^4)
for r in eachindex(d)
d[r] = rand()
end
x[c] = d
end
DataFrame(x, :auto, copycols=false) ## we delay creation of DataFrame after we have our job done
end
function f2a()
x = Vector{Any}(undef, 100)
for c in eachindex(x)
d = Vector{Float64}(undef, 10^4)
for r in eachindex(d)
d[r] = rand()
end
x[c] = d
end
DataFrame(x, :auto) ## we delay creation of DataFrame after we have our job done
end
@btime f1();
@btime f1a();
@btime f2();
@btime f2a();
26.771 ms (1949524 allocations: 37.40 MiB)
27.464 ms (1949724 allocations: 45.03 MiB)
1.185 ms (524 allocations: 7.66 MiB)
1.585 ms (724 allocations: 15.29 MiB)
You can add rows to a DataFrame in place and it is fast#
x = DataFrame(rand(10^6, 5), :auto)
y = DataFrame(transpose(1.0:5.0), :auto)
z = [1.0:5.0;]
@btime vcat($x, $y); ## creates a new DataFrame - slow
@btime append!($x, $y); ## in place - fast
x = DataFrame(rand(10^6, 5), :auto) ## reset to the same starting point
@btime push!($x, $z); ## add a single row in place - fast
1.701 ms (211 allocations: 38.16 MiB)
1.425 μs (30 allocations: 1.80 KiB)
480.281 ns (16 allocations: 256 bytes)
Allowing missing as well as categorical slows down computations#
using StatsBase
function test(data) ## uses countmap function to test performance
println(eltype(data))
x = rand(data, 10^6)
y = categorical(x)
println(" raw:")
@btime countmap($x)
println(" categorical:")
@btime countmap($y)
nothing
end
test(1:10)
test([randstring() for i in 1:10])
test(allowmissing(1:10))
test(allowmissing([randstring() for i in 1:10]))
Int64
raw:
1.618 ms (7 allocations: 7.63 MiB)
categorical:
10.035 ms (4 allocations: 688 bytes)
String
raw:
26.519 ms (4 allocations: 528 bytes)
categorical:
31.321 ms (4 allocations: 688 bytes)
Union{Missing, Int64}
raw:
6.310 ms (4 allocations: 560 bytes)
categorical:
15.702 ms (1000004 allocations: 30.52 MiB)
Union{Missing, String}
raw:
19.843 ms (4 allocations: 528 bytes)
categorical:
31.528 ms (1000004 allocations: 30.52 MiB)
When aggregating use column selector and prefer integer, categorical, or pooled array grouping variable#
df = DataFrame(x=rand('a':'d', 10^7), y=1);
gdf = groupby(df, :x)
GroupedDataFrame with 4 groups based on key: x
Row | x | y |
---|---|---|
Char | Int64 | |
1 | b | 1 |
2 | b | 1 |
3 | b | 1 |
4 | b | 1 |
5 | b | 1 |
6 | b | 1 |
7 | b | 1 |
8 | b | 1 |
9 | b | 1 |
10 | b | 1 |
11 | b | 1 |
12 | b | 1 |
13 | b | 1 |
⋮ | ⋮ | ⋮ |
2497240 | b | 1 |
2497241 | b | 1 |
2497242 | b | 1 |
2497243 | b | 1 |
2497244 | b | 1 |
2497245 | b | 1 |
2497246 | b | 1 |
2497247 | b | 1 |
2497248 | b | 1 |
2497249 | b | 1 |
2497250 | b | 1 |
2497251 | b | 1 |
⋮
Row | x | y |
---|---|---|
Char | Int64 | |
1 | c | 1 |
2 | c | 1 |
3 | c | 1 |
4 | c | 1 |
5 | c | 1 |
6 | c | 1 |
7 | c | 1 |
8 | c | 1 |
9 | c | 1 |
10 | c | 1 |
11 | c | 1 |
12 | c | 1 |
13 | c | 1 |
⋮ | ⋮ | ⋮ |
2500632 | c | 1 |
2500633 | c | 1 |
2500634 | c | 1 |
2500635 | c | 1 |
2500636 | c | 1 |
2500637 | c | 1 |
2500638 | c | 1 |
2500639 | c | 1 |
2500640 | c | 1 |
2500641 | c | 1 |
2500642 | c | 1 |
2500643 | c | 1 |
traditional syntax, slow
@btime combine(v -> sum(v.y), $gdf)
18.568 ms (305 allocations: 19.07 MiB)
Row | x | x1 |
---|---|---|
Char | Int64 | |
1 | b | 2497251 |
2 | a | 2501619 |
3 | d | 2500487 |
4 | c | 2500643 |
use column selector
@btime combine($gdf, :y => sum)
6.754 ms (186 allocations: 11.45 KiB)
Row | x | y_sum |
---|---|---|
Char | Int64 | |
1 | b | 2497251 |
2 | a | 2501619 |
3 | d | 2500487 |
4 | c | 2500643 |
transform!(df, :x => categorical => :x);
gdf = groupby(df, :x)
GroupedDataFrame with 4 groups based on key: x
Row | x | y |
---|---|---|
Cat… | Int64 | |
1 | a | 1 |
2 | a | 1 |
3 | a | 1 |
4 | a | 1 |
5 | a | 1 |
6 | a | 1 |
7 | a | 1 |
8 | a | 1 |
9 | a | 1 |
10 | a | 1 |
11 | a | 1 |
12 | a | 1 |
13 | a | 1 |
⋮ | ⋮ | ⋮ |
2501608 | a | 1 |
2501609 | a | 1 |
2501610 | a | 1 |
2501611 | a | 1 |
2501612 | a | 1 |
2501613 | a | 1 |
2501614 | a | 1 |
2501615 | a | 1 |
2501616 | a | 1 |
2501617 | a | 1 |
2501618 | a | 1 |
2501619 | a | 1 |
⋮
Row | x | y |
---|---|---|
Cat… | Int64 | |
1 | d | 1 |
2 | d | 1 |
3 | d | 1 |
4 | d | 1 |
5 | d | 1 |
6 | d | 1 |
7 | d | 1 |
8 | d | 1 |
9 | d | 1 |
10 | d | 1 |
11 | d | 1 |
12 | d | 1 |
13 | d | 1 |
⋮ | ⋮ | ⋮ |
2500476 | d | 1 |
2500477 | d | 1 |
2500478 | d | 1 |
2500479 | d | 1 |
2500480 | d | 1 |
2500481 | d | 1 |
2500482 | d | 1 |
2500483 | d | 1 |
2500484 | d | 1 |
2500485 | d | 1 |
2500486 | d | 1 |
2500487 | d | 1 |
@btime combine($gdf, :y => sum)
6.805 ms (193 allocations: 12.03 KiB)
Row | x | y_sum |
---|---|---|
Cat… | Int64 | |
1 | a | 2501619 |
2 | b | 2497251 |
3 | c | 2500643 |
4 | d | 2500487 |
transform!(df, :x => PooledArray{Char} => :x)
Row | x | y |
---|---|---|
Char | Int64 | |
1 | b | 1 |
2 | a | 1 |
3 | a | 1 |
4 | b | 1 |
5 | d | 1 |
6 | d | 1 |
7 | d | 1 |
8 | b | 1 |
9 | c | 1 |
10 | b | 1 |
11 | b | 1 |
12 | a | 1 |
13 | d | 1 |
⋮ | ⋮ | ⋮ |
9999989 | d | 1 |
9999990 | a | 1 |
9999991 | b | 1 |
9999992 | b | 1 |
9999993 | b | 1 |
9999994 | c | 1 |
9999995 | b | 1 |
9999996 | c | 1 |
9999997 | a | 1 |
9999998 | d | 1 |
9999999 | d | 1 |
10000000 | b | 1 |
gdf = groupby(df, :x)
GroupedDataFrame with 4 groups based on key: x
Row | x | y |
---|---|---|
Char | Int64 | |
1 | b | 1 |
2 | b | 1 |
3 | b | 1 |
4 | b | 1 |
5 | b | 1 |
6 | b | 1 |
7 | b | 1 |
8 | b | 1 |
9 | b | 1 |
10 | b | 1 |
11 | b | 1 |
12 | b | 1 |
13 | b | 1 |
⋮ | ⋮ | ⋮ |
2497240 | b | 1 |
2497241 | b | 1 |
2497242 | b | 1 |
2497243 | b | 1 |
2497244 | b | 1 |
2497245 | b | 1 |
2497246 | b | 1 |
2497247 | b | 1 |
2497248 | b | 1 |
2497249 | b | 1 |
2497250 | b | 1 |
2497251 | b | 1 |
⋮
Row | x | y |
---|---|---|
Char | Int64 | |
1 | c | 1 |
2 | c | 1 |
3 | c | 1 |
4 | c | 1 |
5 | c | 1 |
6 | c | 1 |
7 | c | 1 |
8 | c | 1 |
9 | c | 1 |
10 | c | 1 |
11 | c | 1 |
12 | c | 1 |
13 | c | 1 |
⋮ | ⋮ | ⋮ |
2500632 | c | 1 |
2500633 | c | 1 |
2500634 | c | 1 |
2500635 | c | 1 |
2500636 | c | 1 |
2500637 | c | 1 |
2500638 | c | 1 |
2500639 | c | 1 |
2500640 | c | 1 |
2500641 | c | 1 |
2500642 | c | 1 |
2500643 | c | 1 |
@btime combine($gdf, :y => sum)
6.745 ms (188 allocations: 11.52 KiB)
Row | x | y_sum |
---|---|---|
Char | Int64 | |
1 | b | 2497251 |
2 | a | 2501619 |
3 | d | 2500487 |
4 | c | 2500643 |
Use views instead of materializing a new DataFrame#
x = DataFrame(rand(100, 1000), :auto)
@btime $x[1:1, :]
196.315 μs (2986 allocations: 159.50 KiB)
Row | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | x10 | x11 | x12 | x13 | x14 | x15 | x16 | x17 | x18 | x19 | x20 | x21 | x22 | x23 | x24 | x25 | x26 | x27 | x28 | x29 | x30 | x31 | x32 | x33 | x34 | x35 | x36 | x37 | x38 | x39 | x40 | x41 | x42 | x43 | x44 | x45 | x46 | x47 | x48 | x49 | x50 | x51 | x52 | x53 | x54 | x55 | x56 | x57 | x58 | x59 | x60 | x61 | x62 | x63 | x64 | x65 | x66 | x67 | x68 | x69 | x70 | x71 | x72 | x73 | x74 | x75 | x76 | x77 | x78 | x79 | x80 | x81 | x82 | x83 | x84 | x85 | x86 | x87 | x88 | x89 | x90 | x91 | x92 | x93 | x94 | x95 | x96 | x97 | x98 | x99 | x100 | ⋯ |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | ⋯ | |
1 | 0.521901 | 0.692887 | 0.366414 | 0.102794 | 0.19886 | 0.374543 | 0.729784 | 0.320478 | 0.288889 | 0.918255 | 0.372405 | 0.552024 | 0.317577 | 0.575798 | 0.452572 | 0.720902 | 0.56813 | 0.322693 | 0.300173 | 0.116703 | 0.893756 | 0.491109 | 0.775598 | 0.493101 | 0.361971 | 0.261758 | 0.999536 | 0.189869 | 0.546057 | 0.867213 | 0.737009 | 0.293986 | 0.733613 | 0.30569 | 0.657365 | 0.583529 | 0.620594 | 0.62055 | 0.258063 | 0.942158 | 0.73184 | 0.832171 | 0.966458 | 0.839033 | 0.710823 | 0.594607 | 0.263443 | 0.769777 | 0.593357 | 0.80593 | 0.668702 | 0.119605 | 0.358539 | 0.878266 | 0.0987686 | 0.578032 | 0.827768 | 0.00386335 | 0.783199 | 0.0903506 | 0.560669 | 0.936614 | 0.550657 | 0.277401 | 0.130133 | 0.939827 | 0.524047 | 0.823973 | 0.641287 | 0.478051 | 0.0453831 | 0.753664 | 0.337753 | 0.79056 | 0.257576 | 0.345445 | 0.714476 | 0.351775 | 0.668496 | 0.763143 | 0.56757 | 0.663363 | 0.373204 | 0.135539 | 0.811645 | 0.0979725 | 0.137563 | 0.350868 | 0.784021 | 0.580981 | 0.425574 | 0.652908 | 0.20812 | 0.874275 | 0.651265 | 0.265768 | 0.0213973 | 0.771802 | 0.663213 | 0.396567 | ⋯ |
@btime $x[1, :]
19.433 ns (0 allocations: 0 bytes)
Row | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | x10 | x11 | x12 | x13 | x14 | x15 | x16 | x17 | x18 | x19 | x20 | x21 | x22 | x23 | x24 | x25 | x26 | x27 | x28 | x29 | x30 | x31 | x32 | x33 | x34 | x35 | x36 | x37 | x38 | x39 | x40 | x41 | x42 | x43 | x44 | x45 | x46 | x47 | x48 | x49 | x50 | x51 | x52 | x53 | x54 | x55 | x56 | x57 | x58 | x59 | x60 | x61 | x62 | x63 | x64 | x65 | x66 | x67 | x68 | x69 | x70 | x71 | x72 | x73 | x74 | x75 | x76 | x77 | x78 | x79 | x80 | x81 | x82 | x83 | x84 | x85 | x86 | x87 | x88 | x89 | x90 | x91 | x92 | x93 | x94 | x95 | x96 | x97 | x98 | x99 | x100 | ⋯ |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | ⋯ | |
1 | 0.521901 | 0.692887 | 0.366414 | 0.102794 | 0.19886 | 0.374543 | 0.729784 | 0.320478 | 0.288889 | 0.918255 | 0.372405 | 0.552024 | 0.317577 | 0.575798 | 0.452572 | 0.720902 | 0.56813 | 0.322693 | 0.300173 | 0.116703 | 0.893756 | 0.491109 | 0.775598 | 0.493101 | 0.361971 | 0.261758 | 0.999536 | 0.189869 | 0.546057 | 0.867213 | 0.737009 | 0.293986 | 0.733613 | 0.30569 | 0.657365 | 0.583529 | 0.620594 | 0.62055 | 0.258063 | 0.942158 | 0.73184 | 0.832171 | 0.966458 | 0.839033 | 0.710823 | 0.594607 | 0.263443 | 0.769777 | 0.593357 | 0.80593 | 0.668702 | 0.119605 | 0.358539 | 0.878266 | 0.0987686 | 0.578032 | 0.827768 | 0.00386335 | 0.783199 | 0.0903506 | 0.560669 | 0.936614 | 0.550657 | 0.277401 | 0.130133 | 0.939827 | 0.524047 | 0.823973 | 0.641287 | 0.478051 | 0.0453831 | 0.753664 | 0.337753 | 0.79056 | 0.257576 | 0.345445 | 0.714476 | 0.351775 | 0.668496 | 0.763143 | 0.56757 | 0.663363 | 0.373204 | 0.135539 | 0.811645 | 0.0979725 | 0.137563 | 0.350868 | 0.784021 | 0.580981 | 0.425574 | 0.652908 | 0.20812 | 0.874275 | 0.651265 | 0.265768 | 0.0213973 | 0.771802 | 0.663213 | 0.396567 | ⋯ |
@btime view($x, 1:1, :)
19.433 ns (0 allocations: 0 bytes)
Row | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | x10 | x11 | x12 | x13 | x14 | x15 | x16 | x17 | x18 | x19 | x20 | x21 | x22 | x23 | x24 | x25 | x26 | x27 | x28 | x29 | x30 | x31 | x32 | x33 | x34 | x35 | x36 | x37 | x38 | x39 | x40 | x41 | x42 | x43 | x44 | x45 | x46 | x47 | x48 | x49 | x50 | x51 | x52 | x53 | x54 | x55 | x56 | x57 | x58 | x59 | x60 | x61 | x62 | x63 | x64 | x65 | x66 | x67 | x68 | x69 | x70 | x71 | x72 | x73 | x74 | x75 | x76 | x77 | x78 | x79 | x80 | x81 | x82 | x83 | x84 | x85 | x86 | x87 | x88 | x89 | x90 | x91 | x92 | x93 | x94 | x95 | x96 | x97 | x98 | x99 | x100 | ⋯ |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | ⋯ | |
1 | 0.521901 | 0.692887 | 0.366414 | 0.102794 | 0.19886 | 0.374543 | 0.729784 | 0.320478 | 0.288889 | 0.918255 | 0.372405 | 0.552024 | 0.317577 | 0.575798 | 0.452572 | 0.720902 | 0.56813 | 0.322693 | 0.300173 | 0.116703 | 0.893756 | 0.491109 | 0.775598 | 0.493101 | 0.361971 | 0.261758 | 0.999536 | 0.189869 | 0.546057 | 0.867213 | 0.737009 | 0.293986 | 0.733613 | 0.30569 | 0.657365 | 0.583529 | 0.620594 | 0.62055 | 0.258063 | 0.942158 | 0.73184 | 0.832171 | 0.966458 | 0.839033 | 0.710823 | 0.594607 | 0.263443 | 0.769777 | 0.593357 | 0.80593 | 0.668702 | 0.119605 | 0.358539 | 0.878266 | 0.0987686 | 0.578032 | 0.827768 | 0.00386335 | 0.783199 | 0.0903506 | 0.560669 | 0.936614 | 0.550657 | 0.277401 | 0.130133 | 0.939827 | 0.524047 | 0.823973 | 0.641287 | 0.478051 | 0.0453831 | 0.753664 | 0.337753 | 0.79056 | 0.257576 | 0.345445 | 0.714476 | 0.351775 | 0.668496 | 0.763143 | 0.56757 | 0.663363 | 0.373204 | 0.135539 | 0.811645 | 0.0979725 | 0.137563 | 0.350868 | 0.784021 | 0.580981 | 0.425574 | 0.652908 | 0.20812 | 0.874275 | 0.651265 | 0.265768 | 0.0213973 | 0.771802 | 0.663213 | 0.396567 | ⋯ |
@btime $x[1:1, 1:20]
4.414 μs (51 allocations: 4.28 KiB)
Row | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | x10 | x11 | x12 | x13 | x14 | x15 | x16 | x17 | x18 | x19 | x20 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | |
1 | 0.521901 | 0.692887 | 0.366414 | 0.102794 | 0.19886 | 0.374543 | 0.729784 | 0.320478 | 0.288889 | 0.918255 | 0.372405 | 0.552024 | 0.317577 | 0.575798 | 0.452572 | 0.720902 | 0.56813 | 0.322693 | 0.300173 | 0.116703 |
@btime $x[1, 1:20]
21.284 ns (0 allocations: 0 bytes)
Row | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | x10 | x11 | x12 | x13 | x14 | x15 | x16 | x17 | x18 | x19 | x20 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | |
1 | 0.521901 | 0.692887 | 0.366414 | 0.102794 | 0.19886 | 0.374543 | 0.729784 | 0.320478 | 0.288889 | 0.918255 | 0.372405 | 0.552024 | 0.317577 | 0.575798 | 0.452572 | 0.720902 | 0.56813 | 0.322693 | 0.300173 | 0.116703 |
@btime view($x, 1:1, 1:20)
20.047 ns (0 allocations: 0 bytes)
Row | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | x10 | x11 | x12 | x13 | x14 | x15 | x16 | x17 | x18 | x19 | x20 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | |
1 | 0.521901 | 0.692887 | 0.366414 | 0.102794 | 0.19886 | 0.374543 | 0.729784 | 0.320478 | 0.288889 | 0.918255 | 0.372405 | 0.552024 | 0.317577 | 0.575798 | 0.452572 | 0.720902 | 0.56813 | 0.322693 | 0.300173 | 0.116703 |
This notebook was generated using Literate.jl.