If you place the time
command at the beginning of an input
line, the time the command takes to run will be displayed after the
output. For example, we can compare the running time for a certain
exponentiation operation in several ways. The timings below
will probably be much different on your computer, or even between
different versions of Sage. First, native Python:
sage: time a = int(1938)^int(99484) CPU times: user 0.66 s, sys: 0.00 s, total: 0.66 s Wall time: 0.66
Next we time exponentiation using the native Sage Integer type, which is implemented (in Cython) using the GMP library:
sage: time a = 1938^99484 CPU times: user 0.04 s, sys: 0.00 s, total: 0.04 s Wall time: 0.04
sage: time a = pari(1938)^pari(99484) CPU times: user 0.05 s, sys: 0.00 s, total: 0.05 s Wall time: 0.05
You can also time a block of commands using the cputime
command,
as illustrated below:
sage: t = cputime() sage: a = int(1938)^int(99484) sage: b = 1938^99484 sage: c = pari(1938)^pari(99484) sage: cputime(t) # somewhat random output 0.64
sage: cputime? ... Return the time in CPU second since SAGE started, or with optional argument t, return the time since time t. INPUT: t -- (optional) float, time in CPU seconds OUTPUT: float -- time in CPU seconds
The walltime
command behaves just like the cputime
command, except that it measures wall time.
We can also compute the above power in some of the computer algebra systems that Sage includes. In each case we execute a trivial command in the system, in order to start up the server for that program. The most relevant time is the wall time. However, if there is a significant difference between the wall time and the CPU time then this may indicate a performance issue worth looking into.
sage: time 1938^99484; CPU times: user 0.01 s, sys: 0.00 s, total: 0.01 s Wall time: 0.01 sage: gp(0) 0 sage: time g = gp('1938^99484') CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s Wall time: 0.04 sage: maxima(0) 0 sage: time g = maxima('1938^99484') CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s Wall time: 0.30 sage: kash(0) 0 sage: time g = kash('1938^99484') CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s Wall time: 0.04 sage: mathematica(0) 0 sage: time g = mathematica('1938^99484') CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s Wall time: 0.03 sage: maple(0) 0 sage: time g = maple('1938^99484') CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s Wall time: 0.11 sage: gap(0) 0 sage: time g = gap.eval('1938^99484;;') CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s Wall time: 1.02
See About this document... for information on suggesting changes.