Skip to content

oxinabox/AutoPreallocation.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AutoPreallocation

Build Status Code Style: Blue

Have you ever wanted your code to allocate less? Have you ever felt explictly preallocating everything was just too hard? Have you ever thought: "why not just reuse the allocated memory from last time"? Well look no further, friend.

How to use:

The simplest way of using this package is via only one function preallocate, e.g

julia> using AutoPreallocation, BenchmarkTools

julia> A, B, C = (rand(1000, 1000) for _ in 1:3)
Base.Generator{UnitRange{Int64},var"#9#10"}(var"#9#10"(), 1:3)

julia> f(x, y, z) = x * y * z
f (generic function with 1 method)

julia> x, preallocated_f = preallocate(f, A, B, C);

julia> @btime f(A, B, C);
  25.684 ms (4 allocations: 15.26 MiB)

julia> @btime preallocated_f(A, B, C);
  26.077 ms (4 allocations: 144 bytes)

License

MIT License

About

What if your code allocated less? Remember what memory we needed last time and use it again every time after

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages