是否可以将Python程序转换为C/C++?
我需要实现几个算法,我不知道,如果性能差距大到足以证明所有的痛苦在C/C++(这我不擅长)做的时候我会去.我考虑过编写一个简单的算法,并针对这样一个转换后的解决方案进 如果仅这一点明显快于Python版本,那么除了在C/C++中做这件事之外我别无选择.
在相对小的项目做的Python让我欣赏这种语言的动态类型性质(无需申报代码跟踪的类型),这往往使沿途更快,痛苦少的发展过程.但是,我觉得在更大的项目中,这实际上可能是一个障碍,因为代码运行速度比在C++中等效.但话又说回来,使用numpy的和/或SciPy的使用Python可以让你的代码作为一个本地C++程序(其中在C++代码有时会需要更长的时间来开发)一样跑得快.
我在阅读Justin Peel对线程" Python是否比C++更快,更轻? " 的评论后发布了这个问题,他说:"而且,那些谈论Python对于严重数字运算缓慢的人并没有使用Numpy和Scipy模块. Python是真正起飞在科学计算的这些日子.当然,速度来自使用用C或Fortran语言编写的库模块,但是这在我看来,一个脚本语言的美." 或者,正如·洛写关于Python的在同一线程上:"......既然管理内存对我来说,我没有做任何的内存管理,节约追逐核泄漏的时间." 我还考察了一个Python/numpy的/ C++相关的性能问题的" 标杆(蟒蛇与C++使用BLAS)和(numpy的) ",其中JF塞巴斯蒂安写道:"......这里是C之间和numpy的我的机器上没有区别++".
这两个线程让我想知道,对于使用Numpy/Scipy生成软件来分析"大数据"的Python程序员来说,知道C++是否有任何真正的优势,其中性能显然非常重要(还有代码可读性和开发)速度是必须的)?
注意:我对处理大量文本文件特别感兴趣.具有多列的100K-800K行的文本文件,其中Python可能需要花费五分钟来分析"仅"200K行的文件.
人们总是说Python不像C/C++,Java等其他语言那么高效.而且它也建议用C编写瓶颈部分.但是我从来没有遇到过这样的问题,也许是因为大多数时间是你解决问题的方式,而不是语言的效率.
任何人都可以说明任何真实情况吗?一些简单的代码会很棒.
我用它来实现神经网络。我更喜欢NumPy,因为用Python准备数据更方便;但是,我担心 NumPy 不如 C++ 库快。
我知道C++应该比Python 3快得多,因为它是一种编译语言而不是解释语言.
我编写了两个程序,使用蒙特卡罗模拟来计算Pi,一个在Python 3中,另一个在C++中.
Python的结果比C++快大约16倍.如下图所示,重复值为(10,000,000),Python需要8.5秒,而C++需要137.4秒.
我是C++的新手,但我找不到解释这种行为的在线帖子.
根据这篇文章, C++一般应该比Python快10倍 - 100倍,这显然不是我的情况.
请帮助我理解为什么Python在我的情况下比C++快得多.
我的结果:
Python源代码:
from random import random
import time
import sys
class MonteCarloSimulator(object):
def __init__(self, value):
self.value = value
if sys.platform == "win32":
self.G = ''
self.R = ''
self.END = ''
else:
self.G = '\033[92m'
self.R = '\033[1;31m'
self.END = '\033[0m'
def unit_circle(self, x, y):
if (x ** 2 + y ** 2) <= 1:
return True
else: …Run Code Online (Sandbox Code Playgroud) 我一直在编写一个简单的测试来比较 c++ 相对于 python 的速度改进。我的结果出乎意料,c++ 几乎是用 python 编写的程序的三倍。我猜想 python 函数内部的循环中有一些使用迭代器或其他东西的东西。
C++代码
#include <ctime>
#include <chrono>
using namespace std;
using namespace chrono;
void mult(int* a, int b)
{
for (size_t i = 0; i < 100000000; i++)
{
a[i] *= b;
}
}
int main()
{
srand(time(0));
int* a = new int[100000000];
int l = 100000000;
for (int i = 0; i < l; ++i)
{
a[i] = rand();
}
auto start = high_resolution_clock::now();
mult(a, 5);
auto stop = high_resolution_clock::now();
auto …Run Code Online (Sandbox Code Playgroud) 让我直接说,我不是程序员.我只是一个有想法的人,迈出了实现这一目标的第一步.我对编程并不陌生,请注意,但这里的一些概念和术语已经超出我的想象; 如果之前已经回答过这个问题(即将Python程序转换为C/C++代码?),我会提前道歉.
我有一个想法,创建一个简单的人工智能网络来分析从手机通过云计算发送的音乐数据(我有一个云的东西).这将需要大量的内存,并且需要快速进行硬数字运算.我曾计划在python中做这件事,但从那时起我就知道这可能不是一个好主意(Python是否比C++更快更轻?).
由于python真的是我皮套中唯一的枪,我正在考虑使用python-to-C++转换器.但是,没有任何价格没有:
提前致谢.
c++ ×6
python ×6
performance ×3
numpy ×2
benchmarking ×1
c ×1
converter ×1
montecarlo ×1
scipy ×1
simulation ×1