stillyslalom
Joined 14 years ago
Karma
32
Submissions
11
Member since
Sep 17
Joined 14 years ago
julia> df = DataFrame(y = rand(10^6), filter=randn(10^6));
julia> @transform!(df, :x = cumsum(:y .* :filter))
1000000×3 DataFrame
Row │ y filter x
│ Float64 Float64 Float64
─────────┼────────────────────────────────────
1 │ 0.0726663 1.7213 0.125081
2 │ 0.183898 -0.392131 0.0529686
3 │ 0.150274 1.08083 0.21539
⋮ │ ⋮ ⋮ ⋮
It's particularly nice in conjunction with @chain [1].[1] https://juliadata.github.io/DataFramesMeta.jl/dev/#Chaining-...
[0] https://aviation-safety.net/graphics/infographics/Fatal-Acci...
julia> using LinearAlgebra
julia> BLAS.vendor()
:openblas64
julia> BLAS.set_num_threads(1)
julia> peakflops()
3.9023447970402664e10
julia> using LinearAlgebra
julia> BLAS.vendor()
:mkl
julia> BLAS.set_num_threads(1)
julia> peakflops()
4.8113846984735275e10
That's close to the ~50 Gflops I saw in @celrod's benchmarks.
I don't think you'd actually want to include each of those packages in a standard distro: does the average user really need to programmatically send emails or deal with Voronoi tessellations? Probably not, but I still think there's value in a batteries-included approach, especially when working with students.