本次测试matx库。该库由字节跳动开源,首先会将要优化的代码编译成c++。然后通过编译c++为扩展的方式,使用他们自己的pipline进行调用。
优点:近乎于扩展的速度,近乎0学习成本。只要将变量类型进行定义即可
缺点:数字类型最多只支持到int64位(可能版本问题)。基本都是为了机器学习而优化。导致大部分公共库都不支持。
安装就不赘述。直接上测试代码。后续会进行性能对比。
import timeit
import matx
def fib(n: int) -> int:
ret :int = 0
for x in range(n + 1):
ret += 1
return ret
def main():
fib_script = matx.script(fib)
#print(f'Matx execution time: {timeit.timeit(lambda: fib_script(30), number=10)}s') # 0.03s
print(fib_script(9999))
if __name__ == '__main__':
main()