Python和C++编写block
2016-03-30 09:20
239 查看
在gnuradio中可以使用Python编写模块,也可以使用C++编写。
看到官网上说使用Python编写对性能要求不高的模块,开始很不理解。后来使用Python编写了双差分调制和解调模块,终于意识到Python和C++的性能上还是差很多的。
由于Python是一种解释型语言,而且语法比较简单,使用Python编写模块确实比较简单,而且可以快速开发,即时测试。
而C++作为一种编译型语言,每次修改之后都需要重新编译、安装,需要重复输入很多命令,也很浪费时间,而且C++语法也比较复杂。
Python的一个不足在于多线程。据说Python是仅有的支持多线程的解释型语言,虽然如此,Python并非是真正的多线程,在Python中存在全局解释器锁,在任意时刻只有一个Python在解释Python code。
引用知乎上的解释:
+++++++++++++++++++++++++
如果你的代码是CPU密集型,多个线程的代码很有可能是线性执行的。所以这种情况下多线程是鸡肋,效率可能还不如单线程因为有context switch
但是:如果你的代码是IO密集型,多线程可以明显提高效率。例如制作爬虫(我就不明白为什么Python总和爬虫联系在一起…不过也只想起来这个例子…),绝大多数时间爬虫是在等待socket返回数据。这个时候C代码里是有release GIL的,最终结果是某个线程等待IO的时候其他线程可以继续执行。
反过来讲:你就不应该用Python写CPU密集型的代码…效率摆在那里…
作者:yegle
链接:https://www.zhihu.com/question/23474039/answer/24695447
++++++++++++++++++++++++++
这可能就是在gnuradio中Python所编写的模块性能不如C++的原因。将使用Python编写的双差分模块添加到流图中,并通过USRP进行实测,可以看到,在信息窗口中会不断的显示UUUUUUUUUUUUUU。即使是软件仿真,如果将信息在信息窗口打印的话,也可以看到Python编写的双差分模块的处理速度比C++编写的双差分模块慢的多。
看到官网上说使用Python编写对性能要求不高的模块,开始很不理解。后来使用Python编写了双差分调制和解调模块,终于意识到Python和C++的性能上还是差很多的。
由于Python是一种解释型语言,而且语法比较简单,使用Python编写模块确实比较简单,而且可以快速开发,即时测试。
而C++作为一种编译型语言,每次修改之后都需要重新编译、安装,需要重复输入很多命令,也很浪费时间,而且C++语法也比较复杂。
Python的一个不足在于多线程。据说Python是仅有的支持多线程的解释型语言,虽然如此,Python并非是真正的多线程,在Python中存在全局解释器锁,在任意时刻只有一个Python在解释Python code。
引用知乎上的解释:
+++++++++++++++++++++++++
如果你的代码是CPU密集型,多个线程的代码很有可能是线性执行的。所以这种情况下多线程是鸡肋,效率可能还不如单线程因为有context switch
但是:如果你的代码是IO密集型,多线程可以明显提高效率。例如制作爬虫(我就不明白为什么Python总和爬虫联系在一起…不过也只想起来这个例子…),绝大多数时间爬虫是在等待socket返回数据。这个时候C代码里是有release GIL的,最终结果是某个线程等待IO的时候其他线程可以继续执行。
反过来讲:你就不应该用Python写CPU密集型的代码…效率摆在那里…
作者:yegle
链接:https://www.zhihu.com/question/23474039/answer/24695447
++++++++++++++++++++++++++
这可能就是在gnuradio中Python所编写的模块性能不如C++的原因。将使用Python编写的双差分模块添加到流图中,并通过USRP进行实测,可以看到,在信息窗口中会不断的显示UUUUUUUUUUUUUU。即使是软件仿真,如果将信息在信息窗口打印的话,也可以看到Python编写的双差分模块的处理速度比C++编写的双差分模块慢的多。
相关文章推荐
- 如何利用Emacs来调试C++程序
- C++实现矩阵类型的基本操作:创建矩阵(M x N)、释放内存、获取某一元素的值、修改某一元素的值、乘法操作
- 深度优先搜索DFS(迷宫问题)
- 【poj 1276】Cash Machine 题意&题解&代码(C++)
- 【poj 1837】Balance 题意&题解&代码(C++)
- 《C++》15 C++ 命名空间
- 《C++》14 C++ 类数据抽象
- 《C++》13 C++ 多态
- 堆和栈的区别(转载)
- ISBN号码
- 实验:C++实验2-【项目1】标准体重
- C++:由输出推断继承关系
- c++引用深入分析
- 将数组a中的n个整数按相反顺序存放
- 如何产生一个不重复的随机数
- 【C/C++】计算两个整数的最大公约数和最小公倍数
- Effective C++: 模板类型推断.
- Effective C++: auto类型推断.
- C++浓缩(五)
- C++字符串