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
11.784 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`
101.216 ms (5999022 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.827 ms (44 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();
4.249 ms (44 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.804 ms (44 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();
27.657 ms (1949728 allocations: 37.40 MiB)
28.317 ms (1950028 allocations: 45.03 MiB)
1.187 ms (728 allocations: 7.66 MiB)
1.661 ms (1028 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
2.800 ms (213 allocations: 38.16 MiB)
1.098 μs (30 allocations: 1.52 KiB)
433.182 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.973 ms (8 allocations: 7.63 MiB)
categorical:
9.872 ms (4 allocations: 576 bytes)
String
raw:
17.873 ms (4 allocations: 448 bytes)
categorical:
21.670 ms (4 allocations: 576 bytes)
Union{Missing, Int64}
raw:
7.171 ms (4 allocations: 464 bytes)
categorical:
21.828 ms (1000004 allocations: 30.52 MiB)
Union{Missing, String}
raw:
19.383 ms (4 allocations: 448 bytes)
categorical:
35.430 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 | 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 |
| ⋮ | ⋮ | ⋮ |
| 2500084 | c | 1 |
| 2500085 | c | 1 |
| 2500086 | c | 1 |
| 2500087 | c | 1 |
| 2500088 | c | 1 |
| 2500089 | c | 1 |
| 2500090 | c | 1 |
| 2500091 | c | 1 |
| 2500092 | c | 1 |
| 2500093 | c | 1 |
| 2500094 | c | 1 |
| 2500095 | c | 1 |
⋮
| 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 |
| ⋮ | ⋮ | ⋮ |
| 2499716 | b | 1 |
| 2499717 | b | 1 |
| 2499718 | b | 1 |
| 2499719 | b | 1 |
| 2499720 | b | 1 |
| 2499721 | b | 1 |
| 2499722 | b | 1 |
| 2499723 | b | 1 |
| 2499724 | b | 1 |
| 2499725 | b | 1 |
| 2499726 | b | 1 |
| 2499727 | b | 1 |
traditional syntax, slow
@btime combine(v -> sum(v.y), $gdf)
19.492 ms (333 allocations: 19.09 MiB)
| Row | x | x1 |
|---|---|---|
| Char | Int64 | |
| 1 | c | 2500095 |
| 2 | d | 2500238 |
| 3 | a | 2499940 |
| 4 | b | 2499727 |
use column selector
@btime combine($gdf, :y => sum)
7.293 ms (199 allocations: 9.41 KiB)
| Row | x | y_sum |
|---|---|---|
| Char | Int64 | |
| 1 | c | 2500095 |
| 2 | d | 2500238 |
| 3 | a | 2499940 |
| 4 | b | 2499727 |
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 |
| ⋮ | ⋮ | ⋮ |
| 2499929 | a | 1 |
| 2499930 | a | 1 |
| 2499931 | a | 1 |
| 2499932 | a | 1 |
| 2499933 | a | 1 |
| 2499934 | a | 1 |
| 2499935 | a | 1 |
| 2499936 | a | 1 |
| 2499937 | a | 1 |
| 2499938 | a | 1 |
| 2499939 | a | 1 |
| 2499940 | 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 |
| ⋮ | ⋮ | ⋮ |
| 2500227 | d | 1 |
| 2500228 | d | 1 |
| 2500229 | d | 1 |
| 2500230 | d | 1 |
| 2500231 | d | 1 |
| 2500232 | d | 1 |
| 2500233 | d | 1 |
| 2500234 | d | 1 |
| 2500235 | d | 1 |
| 2500236 | d | 1 |
| 2500237 | d | 1 |
| 2500238 | d | 1 |
@btime combine($gdf, :y => sum)
7.043 ms (209 allocations: 9.98 KiB)
| Row | x | y_sum |
|---|---|---|
| Cat… | Int64 | |
| 1 | a | 2499940 |
| 2 | b | 2499727 |
| 3 | c | 2500095 |
| 4 | d | 2500238 |
transform!(df, :x => PooledArray{Char} => :x)
| Row | x | y |
|---|---|---|
| Char | Int64 | |
| 1 | c | 1 |
| 2 | c | 1 |
| 3 | c | 1 |
| 4 | d | 1 |
| 5 | d | 1 |
| 6 | a | 1 |
| 7 | c | 1 |
| 8 | c | 1 |
| 9 | a | 1 |
| 10 | c | 1 |
| 11 | b | 1 |
| 12 | c | 1 |
| 13 | c | 1 |
| ⋮ | ⋮ | ⋮ |
| 9999989 | c | 1 |
| 9999990 | b | 1 |
| 9999991 | a | 1 |
| 9999992 | b | 1 |
| 9999993 | a | 1 |
| 9999994 | c | 1 |
| 9999995 | a | 1 |
| 9999996 | d | 1 |
| 9999997 | d | 1 |
| 9999998 | d | 1 |
| 9999999 | c | 1 |
| 10000000 | d | 1 |
gdf = groupby(df, :x)
GroupedDataFrame with 4 groups based on key: x
| 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 |
| ⋮ | ⋮ | ⋮ |
| 2500084 | c | 1 |
| 2500085 | c | 1 |
| 2500086 | c | 1 |
| 2500087 | c | 1 |
| 2500088 | c | 1 |
| 2500089 | c | 1 |
| 2500090 | c | 1 |
| 2500091 | c | 1 |
| 2500092 | c | 1 |
| 2500093 | c | 1 |
| 2500094 | c | 1 |
| 2500095 | c | 1 |
⋮
| 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 |
| ⋮ | ⋮ | ⋮ |
| 2499716 | b | 1 |
| 2499717 | b | 1 |
| 2499718 | b | 1 |
| 2499719 | b | 1 |
| 2499720 | b | 1 |
| 2499721 | b | 1 |
| 2499722 | b | 1 |
| 2499723 | b | 1 |
| 2499724 | b | 1 |
| 2499725 | b | 1 |
| 2499726 | b | 1 |
| 2499727 | b | 1 |
@btime combine($gdf, :y => sum)
7.131 ms (201 allocations: 9.47 KiB)
| Row | x | y_sum |
|---|---|---|
| Char | Int64 | |
| 1 | c | 2500095 |
| 2 | d | 2500238 |
| 3 | a | 2499940 |
| 4 | b | 2499727 |
Use views instead of materializing a new DataFrame#
x = DataFrame(rand(100, 1000), :auto)
@btime $x[1:1, :]
457.333 μs (3015 allocations: 143.79 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.00702599 | 0.2176 | 0.926413 | 0.108755 | 0.791338 | 0.246384 | 0.0210093 | 0.467955 | 0.189339 | 0.518961 | 0.923005 | 0.100274 | 0.873251 | 0.653408 | 0.73956 | 0.341082 | 0.0931813 | 0.361037 | 0.995287 | 0.366803 | 0.968734 | 0.721908 | 0.0290838 | 0.98805 | 0.480613 | 0.281571 | 0.619372 | 0.569212 | 0.365814 | 0.320611 | 0.992818 | 0.432976 | 0.798711 | 0.654811 | 0.0179248 | 0.377636 | 0.060662 | 0.811085 | 0.162439 | 0.824044 | 0.0384266 | 0.148528 | 0.690303 | 0.642899 | 0.739017 | 0.743175 | 0.989254 | 0.915399 | 0.285275 | 0.332076 | 0.907008 | 0.0585242 | 0.944436 | 0.534531 | 0.238351 | 0.581152 | 0.847331 | 0.473468 | 0.660749 | 0.671566 | 0.00308333 | 0.999262 | 0.419411 | 0.792882 | 0.635005 | 0.00174756 | 0.620437 | 0.868413 | 0.48625 | 0.445734 | 0.536589 | 0.308661 | 0.650038 | 0.055013 | 0.236668 | 0.780303 | 0.982502 | 0.860598 | 0.557916 | 0.0644649 | 0.0553324 | 0.719485 | 0.487847 | 0.967685 | 0.15497 | 0.331471 | 0.172207 | 0.807641 | 0.895582 | 0.53182 | 0.363253 | 0.892567 | 0.410105 | 0.478503 | 0.460407 | 0.30106 | 0.0430202 | 0.799239 | 0.553483 | 0.653734 | ⋯ |
@btime $x[1, :]
17.276 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.00702599 | 0.2176 | 0.926413 | 0.108755 | 0.791338 | 0.246384 | 0.0210093 | 0.467955 | 0.189339 | 0.518961 | 0.923005 | 0.100274 | 0.873251 | 0.653408 | 0.73956 | 0.341082 | 0.0931813 | 0.361037 | 0.995287 | 0.366803 | 0.968734 | 0.721908 | 0.0290838 | 0.98805 | 0.480613 | 0.281571 | 0.619372 | 0.569212 | 0.365814 | 0.320611 | 0.992818 | 0.432976 | 0.798711 | 0.654811 | 0.0179248 | 0.377636 | 0.060662 | 0.811085 | 0.162439 | 0.824044 | 0.0384266 | 0.148528 | 0.690303 | 0.642899 | 0.739017 | 0.743175 | 0.989254 | 0.915399 | 0.285275 | 0.332076 | 0.907008 | 0.0585242 | 0.944436 | 0.534531 | 0.238351 | 0.581152 | 0.847331 | 0.473468 | 0.660749 | 0.671566 | 0.00308333 | 0.999262 | 0.419411 | 0.792882 | 0.635005 | 0.00174756 | 0.620437 | 0.868413 | 0.48625 | 0.445734 | 0.536589 | 0.308661 | 0.650038 | 0.055013 | 0.236668 | 0.780303 | 0.982502 | 0.860598 | 0.557916 | 0.0644649 | 0.0553324 | 0.719485 | 0.487847 | 0.967685 | 0.15497 | 0.331471 | 0.172207 | 0.807641 | 0.895582 | 0.53182 | 0.363253 | 0.892567 | 0.410105 | 0.478503 | 0.460407 | 0.30106 | 0.0430202 | 0.799239 | 0.553483 | 0.653734 | ⋯ |
@btime view($x, 1:1, :)
18.820 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.00702599 | 0.2176 | 0.926413 | 0.108755 | 0.791338 | 0.246384 | 0.0210093 | 0.467955 | 0.189339 | 0.518961 | 0.923005 | 0.100274 | 0.873251 | 0.653408 | 0.73956 | 0.341082 | 0.0931813 | 0.361037 | 0.995287 | 0.366803 | 0.968734 | 0.721908 | 0.0290838 | 0.98805 | 0.480613 | 0.281571 | 0.619372 | 0.569212 | 0.365814 | 0.320611 | 0.992818 | 0.432976 | 0.798711 | 0.654811 | 0.0179248 | 0.377636 | 0.060662 | 0.811085 | 0.162439 | 0.824044 | 0.0384266 | 0.148528 | 0.690303 | 0.642899 | 0.739017 | 0.743175 | 0.989254 | 0.915399 | 0.285275 | 0.332076 | 0.907008 | 0.0585242 | 0.944436 | 0.534531 | 0.238351 | 0.581152 | 0.847331 | 0.473468 | 0.660749 | 0.671566 | 0.00308333 | 0.999262 | 0.419411 | 0.792882 | 0.635005 | 0.00174756 | 0.620437 | 0.868413 | 0.48625 | 0.445734 | 0.536589 | 0.308661 | 0.650038 | 0.055013 | 0.236668 | 0.780303 | 0.982502 | 0.860598 | 0.557916 | 0.0644649 | 0.0553324 | 0.719485 | 0.487847 | 0.967685 | 0.15497 | 0.331471 | 0.172207 | 0.807641 | 0.895582 | 0.53182 | 0.363253 | 0.892567 | 0.410105 | 0.478503 | 0.460407 | 0.30106 | 0.0430202 | 0.799239 | 0.553483 | 0.653734 | ⋯ |
@btime $x[1:1, 1:20]
9.669 μs (70 allocations: 3.09 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.00702599 | 0.2176 | 0.926413 | 0.108755 | 0.791338 | 0.246384 | 0.0210093 | 0.467955 | 0.189339 | 0.518961 | 0.923005 | 0.100274 | 0.873251 | 0.653408 | 0.73956 | 0.341082 | 0.0931813 | 0.361037 | 0.995287 | 0.366803 |
@btime $x[1, 1:20]
20.571 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.00702599 | 0.2176 | 0.926413 | 0.108755 | 0.791338 | 0.246384 | 0.0210093 | 0.467955 | 0.189339 | 0.518961 | 0.923005 | 0.100274 | 0.873251 | 0.653408 | 0.73956 | 0.341082 | 0.0931813 | 0.361037 | 0.995287 | 0.366803 |
@btime view($x, 1:1, 1:20)
20.550 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.00702599 | 0.2176 | 0.926413 | 0.108755 | 0.791338 | 0.246384 | 0.0210093 | 0.467955 | 0.189339 | 0.518961 | 0.923005 | 0.100274 | 0.873251 | 0.653408 | 0.73956 | 0.341082 | 0.0931813 | 0.361037 | 0.995287 | 0.366803 |
This notebook was generated using Literate.jl.