Skip to content

Instantly share code, notes, and snippets.

@zeffii
Last active August 29, 2015 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zeffii/138bf7dd8f914073963d to your computer and use it in GitHub Desktop.
Save zeffii/138bf7dd8f914073963d to your computer and use it in GitHub Desktop.
from mathutils import Vector
from random import random
from itertools import zip_longest
from data_structure import fullList
def make_line_original(integer, step):
vertices = [(0.0, 0.0, 0.0)]
integer = [int(integer) if type(integer) is not list else int(integer[0])]
if type(step) is not list:
step = [step]
fullList(step, integer[0])
for i in range(integer[0]-1):
v = Vector(vertices[i]) + Vector((step[i], 0.0, 0.0))
vertices.append(v[:])
edges = []
for i in range(integer[0]-1):
edges.append((i, i+1))
return vertices, edges
def make_line_mod1(integer, step):
integer = [int(integer) if type(integer) is not list else int(integer[0])]
vertices = [(0,0,0)]
vadd = vertices.append
if type(step) is not list:
step = [step]
fullList(step, integer[0])
component = 0.0
for i in range(1, integer[0]):
component += step[i]
v = (component, 0.0, 0.0)
vadd(v)
edges = []
for i in range(integer[0]-1):
edges.append((i, i+1))
return vertices, edges
a = make_line_original(6, 0.2)
b = make_line_mod1(6, 0.2)
print(a == b) # numeric error? or plane wrong.
# numeric error here, but it is important to check the output
from timeit import Timer
setup = """\
from mathutils import Vector
from random import random
from itertools import zip_longest
from data_structure import fullList
def make_line_original(integer, step):
vertices = [(0.0, 0.0, 0.0)]
integer = [int(integer) if type(integer) is not list else int(integer[0])]
if type(step) is not list:
step = [step]
fullList(step, integer[0])
for i in range(integer[0]-1):
v = Vector(vertices[i]) + Vector((step[i], 0.0, 0.0))
vertices.append(v[:])
edges = []
for i in range(integer[0]-1):
edges.append((i, i+1))
return vertices, edges
def make_line_mod1(integer, step):
integer = [int(integer) if type(integer) is not list else int(integer[0])]
vertices = [(0,0,0)]
vadd = vertices.append
if type(step) is not list:
step = [step]
fullList(step, integer[0])
component = 0.0
for i in range(1, integer[0]):
component += step[i]
v = (component, 0.0, 0.0)
vadd(v)
edges = []
for i in range(integer[0]-1):
edges.append((i, i+1))
return vertices, edges
"""
def test(r=3, times=400):
command = """m = make_line_original(200, 0.2)"""
t2 = Timer(command, setup=setup)
print(command, min(t2.repeat(r, times)))
command = """m = make_line_mod1(200, 0.2)"""
t2 = Timer(command, setup=setup)
print(command, min(t2.repeat(r, times)))
test()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment