Show More
@@ -1,7 +1,7 b'' | |||
|
1 | 1 | # -*- coding: utf-8 -*- |
|
2 | 2 | """Magic functions for InteractiveShell. |
|
3 | 3 | |
|
4 |
$Id: Magic.py 2 |
|
|
4 | $Id: Magic.py 2841 2007-10-10 00:17:26Z fperez $""" | |
|
5 | 5 | |
|
6 | 6 | #***************************************************************************** |
|
7 | 7 | # Copyright (C) 2001 Janko Hauser <jhauser@zscout.de> and |
@@ -1752,7 +1752,14 b' Currently the magic system has the following functions:\\n"""' | |||
|
1752 | 1752 | |
|
1753 | 1753 | src = timeit.template % {'stmt': timeit.reindent(stmt, 8), |
|
1754 | 1754 | 'setup': "pass"} |
|
1755 | # Track compilation time so it can be reported if too long | |
|
1756 | # Minimum time above which compilation time will be reported | |
|
1757 | tc_min = 0.1 | |
|
1758 | ||
|
1759 | t0 = clock() | |
|
1755 | 1760 | code = compile(src, "<magic-timeit>", "exec") |
|
1761 | tc = clock()-t0 | |
|
1762 | ||
|
1756 | 1763 | ns = {} |
|
1757 | 1764 | exec code in self.shell.user_ns, ns |
|
1758 | 1765 | timer.inner = ns["inner"] |
@@ -1775,6 +1782,8 b' Currently the magic system has the following functions:\\n"""' | |||
|
1775 | 1782 | precision, |
|
1776 | 1783 | best * scaling[order], |
|
1777 | 1784 | units[order]) |
|
1785 | if tc > tc_min: | |
|
1786 | print "Compiler time: %.2f s" % tc | |
|
1778 | 1787 | |
|
1779 | 1788 | def magic_time(self,parameter_s = ''): |
|
1780 | 1789 | """Time execution of a Python statement or expression. |
@@ -1805,18 +1814,40 b' Currently the magic system has the following functions:\\n"""' | |||
|
1805 | 1814 | hello world |
|
1806 | 1815 | CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s |
|
1807 | 1816 | Wall time: 0.00 |
|
1817 | ||
|
1818 | Note that the time needed by Python to compile the given expression | |
|
1819 | will be reported if it is more than 0.1s. In this example, the | |
|
1820 | actual exponentiation is done by Python at compilation time, so while | |
|
1821 | the expression can take a noticeable amount of time to compute, that | |
|
1822 | time is purely due to the compilation: | |
|
1823 | ||
|
1824 | In [5]: time 3**9999; | |
|
1825 | CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s | |
|
1826 | Wall time: 0.00 s | |
|
1827 | ||
|
1828 | In [6]: time 3**999999; | |
|
1829 | CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s | |
|
1830 | Wall time: 0.00 s | |
|
1831 | Compiler : 0.78 s | |
|
1808 | 1832 | """ |
|
1809 | 1833 | |
|
1810 | 1834 | # fail immediately if the given expression can't be compiled |
|
1811 | 1835 | |
|
1812 | 1836 | expr = self.shell.prefilter(parameter_s,False) |
|
1837 | ||
|
1838 | # Minimum time above which compilation time will be reported | |
|
1839 | tc_min = 0.1 | |
|
1813 | 1840 | |
|
1814 | 1841 | try: |
|
1815 | 1842 | mode = 'eval' |
|
1843 | t0 = clock() | |
|
1816 | 1844 | code = compile(expr,'<timed eval>',mode) |
|
1845 | tc = clock()-t0 | |
|
1817 | 1846 | except SyntaxError: |
|
1818 | 1847 | mode = 'exec' |
|
1848 | t0 = clock() | |
|
1819 | 1849 | code = compile(expr,'<timed exec>',mode) |
|
1850 | tc = clock()-t0 | |
|
1820 | 1851 | # skew measurement as little as possible |
|
1821 | 1852 | glob = self.shell.user_ns |
|
1822 | 1853 | clk = clock2 |
@@ -1840,7 +1871,9 b' Currently the magic system has the following functions:\\n"""' | |||
|
1840 | 1871 | cpu_tot = cpu_user+cpu_sys |
|
1841 | 1872 | print "CPU times: user %.2f s, sys: %.2f s, total: %.2f s" % \ |
|
1842 | 1873 | (cpu_user,cpu_sys,cpu_tot) |
|
1843 | print "Wall time: %.2f" % wall_time | |
|
1874 | print "Wall time: %.2f s" % wall_time | |
|
1875 | if tc > tc_min: | |
|
1876 | print "Compiler : %.2f s" % tc | |
|
1844 | 1877 | return out |
|
1845 | 1878 | |
|
1846 | 1879 | def magic_macro(self,parameter_s = ''): |
@@ -1,3 +1,9 b'' | |||
|
1 | 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu> | |
|
2 | ||
|
3 | * IPython/Magic.py (magic_time): track compilation time and report | |
|
4 | it if longer than 0.1s (fix done to %time and %timeit). After a | |
|
5 | SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632. | |
|
6 | ||
|
1 | 7 | 2007-09-18 Ville Vainio <vivainio@gmail.com> |
|
2 | 8 | |
|
3 | 9 | * genutils.py(make_quoted_expr): Do not use Itpl, it does |
General Comments 0
You need to be logged in to leave comments.
Login now