| 1 | initial version |
Noted from John's comments, I can confirm the difference stems from the coercion and conversion stuff.
Given script.py and script.sage (same contents):
from sage.all import *
import time
def run(num):
cube = (polytopes.cube() * 37 / 45).change_ring(QQ)
for i in range(num):
hspace = Polyhedron(ieqs=[[(i+1)/(i+2), 1/(i+1), (i+2), (i+53)]]).change_ring(QQ)
intersection = hspace.intersection(cube)
tik = time.time()
run(100)
print('time elapsed: {}'.format(time.time() - tik), 's')
With python script.py, I got time elapsed: 8.750308990478516 s.
With sage script.sage, I got time elapsed: 0.6618611812591553 s, whose execution generated a python file script.sage.py which looks like this:
# This file was *autogenerated* from the file profile.sage
from sage.all_cmdline import * # import sage library
_sage_const_37 = Integer(37); _sage_const_45 = Integer(45); _sage_const_1 = Integer(1); _sage_const_2 = $
from sage.all import *
import time
def run(num):
cube = (polytopes.cube() * _sage_const_37 / _sage_const_45 ).change_ring(QQ)
for i in range(num):
hspace = Polyhedron(ieqs=[[(i+_sage_const_1 )/(i+_sage_const_2 ), _sage_const_1 /(i+_sage_const_$
intersection = hspace.intersection(cube)
tik = time.time()
run(_sage_const_100 )
print('time elapsed: {}'.format(time.time() - tik), 's')
I then ran python script.sage.py and got time elapsed: 0.6441857814788818 s.
This conversion is documented in the tutorial:
When Sage loads example.sage it converts it to Python, which is then executed by the Python interpreter. This conversion is minimal; it mainly involves wrapping integer literals in Integer() floating point literals in RealNumber(), replacing ^’s by **’s, and replacing e.g., R.2 by R.gen(2). The converted version of example.sage is contained in the same directory as example.sage and is called example.sage.py.
| 2 | No.2 Revision |
Noted from John's comments, I can confirm the difference stems from the coercion and conversion stuff.
Given script.py and script.sage (same contents):
from sage.all import *
import time
def run(num):
cube = (polytopes.cube() * 37 / 45).change_ring(QQ)
for i in range(num):
hspace = Polyhedron(ieqs=[[(i+1)/(i+2), 1/(i+1), (i+2), (i+53)]]).change_ring(QQ)
intersection = hspace.intersection(cube)
tik = time.time()
run(100)
print('time elapsed: {}'.format(time.time() - tik), 's')
With python script.py, I got time elapsed: 8.750308990478516 s.
With sage script.sage, I got time elapsed: 0.6618611812591553 s, whose execution automatically generated a python file script.sage.py which looks like this:
# This file was *autogenerated* from the file profile.sage
from sage.all_cmdline import * # import sage library
_sage_const_37 = Integer(37); _sage_const_45 = Integer(45); _sage_const_1 = Integer(1); _sage_const_2 = $
from sage.all import *
import time
def run(num):
cube = (polytopes.cube() * _sage_const_37 / _sage_const_45 ).change_ring(QQ)
for i in range(num):
hspace = Polyhedron(ieqs=[[(i+_sage_const_1 )/(i+_sage_const_2 ), _sage_const_1 /(i+_sage_const_$
intersection = hspace.intersection(cube)
tik = time.time()
run(_sage_const_100 )
print('time elapsed: {}'.format(time.time() - tik), 's')
I then ran python script.sage.py and got time elapsed: 0.6441857814788818 s.
This conversion is documented in the tutorial:
When Sage loads example.sage it converts it to Python, which is then executed by the Python interpreter. This conversion is minimal; it mainly involves wrapping integer literals in Integer() floating point literals in RealNumber(), replacing ^’s by **’s, and replacing e.g., R.2 by R.gen(2). The converted version of example.sage is contained in the same directory as example.sage and is called example.sage.py.
Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.