Chapter 20. The Goodies: Base and Standard Library
Julia comes with batteries included. The Base module contains the most useful functions, types, and macros. These are directly available in Julia.
Julia also provides a large number of specialized modules in its standard library for dates, distributed computing, linear algebra, profiling, random numbers, and more. Functions, types, and macros defined in the standard library have to be imported before they can be used:
-
import Moduleimports the module, andModule.fn(x)calls the functionfn. -
using Moduleimports all exportedModulefunctions, types, and macros.
Additional functionality can be added from a growing collection of packages.
This chapter is not intended as a replacement of the official Julia documentation. The aim is merely to give some examples to illustrate what is possible, without being exhaustive. Functions already introduced elsewhere are not included.
Measuring Performance
We have seen that some algorithms perform better than others. The fibonnaci implementation from “Memos” is a lot faster than the fib implementation from “One More Example”. The @time macro allows us to quantify the difference:
julia>fib(1)1julia>fibonacci(1)1julia>@timefib(40)0.567546 seconds (5 allocations: 176 bytes)102334155julia>@timefibonacci(40)0.000012 seconds (8 allocations: 1.547 KiB)102334155
@time prints the time the function took to execute, the number of allocations, and the allocated memory before returning ...