Ich bin dabei einen PathTracer zu programmieren, doch schon jetzt ist die Rendergeschwindigkeit mehr schlecht als recht! Daher möchte ich meine zentrale Klasse Vektor (3D) so schnell wie möglich machen.
Ich habe bis jetzt vergebens nach einem Vektor Modul, das auf C basiert gesucht und habe bereits Cython probiert. Der Vektor, denn ich mit Cython erstellt habe arbeitet zwar schon deutlich schneller als pures Python, doch die Tatsache, dass eine kleine Klasse zu einem 25kb großem PYD-Modul wird (2500 zeilige C-Datei) macht deutlich, dass mit Sicherheit noch mehr Geschwindigkeitszuwachs möglich ist
könnt ihr mir helfen? gibt es gute Tutorials für das Erstellen von neuen Datentypen in C?
Vielen Dank
Leo
Hier meine Vektor Klasse:
Code: Alles auswählen
from math import sqrt
class Vektor(object):
__slots__ = ("x","y","z")
def __init__(self,x,y,z):
self.x = x
self.y = y
self.z = z
def __str__(self):
return "(%s,%s,%s)" % (self.x,self.y,self.z)
def __abs__(self):
return float(sqrt(self.x**2+self.y**2+self.z**2))
def __add__(self,pVektor):
return Vektor(self.x+pVektor.x,self.y+pVektor.y,self.z+pVektor.z)
def __pos__(self):
return self
def __sub__(self,pVektor):
return Vektor(self.x-pVektor.x,self.y-pVektor.y,self.z-pVektor.z)
[...]