Как я могу "преобразовать" объект класса в python в llvm?
Я готов использовать llvm для оптимизации моего кода на Python. Я прочитал несколько учебных пособий, но я не понял, как, скажем, экспортировать объект класса из кода Python в llvm. Я научился создавать функции в llvm-py, но классы мне не по силам.
Вот пример класса, который я хочу создать в коде llvm:
class Char():
def __init__(self,c):
self.c=c
def next(self,line,p):
try:
return self.c==line[p]
except:
return False
def next_rep(self,line,p):
try:
return self.c==line[p],p
except:
return False,p
Буду благодарен за любую помощь!
1 ответ
Краткий ответ: вы не можете.
Причина в том, что Python является интерпретируемым языком, и в этом языке есть несколько операторов, которые нелегко использовать для статической оценки.
Я предлагаю вам профилировать вашу программу (например, если вы работаете в Linux, используйте опцию запуска IPython -p или вообще через модуль cProfile), и выясните, что занимает большую часть времени программы.
В большинстве программ высокий процент общего времени выполнения занимает относительно небольшая область кода, и его улучшение (либо путем улучшения алгоритмов, либо путем написания расширения C, например, через SWIG) часто может привести к порядку величина улучшения производительности.
Этот вид оптимизации, как правило, гораздо эффективнее, чем пытаться заставить "все работать быстрее".