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 Module imports the module, and Module.fn(x) calls the function fn.

  • using Module imports all exported Module functions, 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)
1
julia> fibonacci(1)
1
julia> @time fib(40)
  0.567546 seconds (5 allocations: 176 bytes)
102334155
julia> @time fibonacci(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 ...

Get Think Julia now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.