ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

高效编程之 命令式编程/符号式编程

2022-08-08 08:31:20  阅读:297  来源: 互联网

标签:高效 return 符号 编程 add 命令式 def


编程范式,有 命令式 编程、函数式编程、符号式编程 等;

 

python 属于解释性语言,即一句一句执行,然后 中间变量 由于不知道后面是否会用到 都 会被存储,每次 都会重新调用 函数;

python 代码属于   命令式编程;

同时 python  提供了 符号式编程,tensorflow 就是一种符号式编程,其先构建计算图,然后再统一执行计算 ;

符号式编程的特点就是  快。

 

效率对比

命令式编程

def sample_add(a, b):
    return a + b

def sample_fancy_func(a, b, c, d):
    e = sample_add(a, b)
    f = sample_add(c, d)
    g = sample_add(e, f)
    return g

time.clock()
for _ in range(1000):
    print(sample_fancy_func(1, 2, 3, 4))
print(time.clock())     #

 

符号式编程

def add_str():
    """仅以字符串形式返回计算流程"""
    return '''
def add(a, b):
    return a + b
'''

def fancy_func_str():
    """仅以字符串形式返回计算流程"""
    return '''
def fancy_func(a, b, c, d):
    e = add(a, b)
    f = add(c, d)
    g = add(e, f)
    return g
'''

def evoke_str():
    """仅以字符串形式返回计算流程"""
    return add_str() + fancy_func_str() + '''
print(fancy_func(1, 2, 3, 4))
'''

prog = evoke_str()
print(prog)
x = compile(prog, '', 'exec')  # 通过compile函数编译完整的计算流程并运行

time.clock()
for _ in range(1000):
    exec(x)
print(time.clock())     #

自己 可以试下

 

当前的深度学习框架

Theano和受其启发的后来者TensorFlow使用了符号式编程,Chainer和它的追随者PyTorch使用了命令式编程,mxnet使用了使用了命令式和符号式的混合编程:

用户可用纯命令式编程进行开发和调试;当需要产品级别的计算性能和部署时,用户可以将大部分命令式程序转换成符号式程序来运行。

小结

 

 

 

 

参考资料:

https://blog.csdn.net/weixin_42109859/article/details/104858932  命令式和符号式编程

https://www.bbsmax.com/A/D8543ngpJE/

https://www.bilibili.com/video/BV11U4y1o7sX/?spm_id_from=333.788&vd_source=f0fc90583fffcc40abb645ed9d20da32  计算性能-如何让你的pytorch代码高效(torchscript).mp4

标签:高效,return,符号,编程,add,命令式,def
来源: https://www.cnblogs.com/yanshw/p/16559973.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有