在Python与C 中找到最大值
Finding maximum value in Python vs. C++
我很好奇为什么在C 中找到最大值比Python3中的最大值要快。这是两种语言中我代码的片段:
c :
int main() {
int arr[] = {45, 67, 89};
int temp = 0;
for(int n = 0; n < 3; n++) {
if(arr[n] > temp)
temp = arr[n];
}
cout << "Biggest number: " << temp << endl;
}
python:
def Main():
numbers = ['87', '67', '32', '43']
print(max(numbers))
if __name__ == "__main__":
Main()
正如代码中所示的那样,我通过在python中使用max()方法来找到C 中的最大值。
然后,我在终端上运行代码以找到其执行时间,并发现大约需要0.006(C )和0.032(Python)。有没有办法进一步缩短python的执行时间?python是一种解释的语言。Python必须使用Python代码读取文本文件,然后对其进行解析,然后开始执行。
到执行C 代码时,C 编译器已经完成了将C 编译到本机机器语言代码中的所有繁重升降机,该机器语言代码直接由CPU执行。
可以预编译Python代码;这样可以节省一些开销,但是C 代码仍然将获得C 编译时优化的好处。较小的数组尺寸,具有侵略性的C 编译器可能会展开循环,甚至可能在编译时计算最大值,而不是在运行时计算。因此,您最终执行的只是:
cout << "Biggest number: " << 89 << endl;
这是理论上,python也可以做的事情;但是,在运行时,这将需要更多的CPU周期。
假设您使用的矢量比上面的玩具示例更大,我会给numpy拍摄。
# set up a vector with 50000 random elements
a = np.random.randint(0,100000,50000)
max_val = np.max(a)
相对于循环非常快。
我的计算机显示使用np.max比python中内置的max()操作快于12倍。C 是一种编译语言,甚至会更快。(Numpy围绕优化C代码的低级软件包。)
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 使用指针从C++中的数组中获取最大值
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 在二维数组中查找最小值和最大值?
- 整数溢出,最大值为 pow(10,19)
- 以C++递归方式查找向量中的最大值
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- C++ 函数,用于查找传入的 N 个数字的平均值、总和、最小值和最大值
- 我的 If Else 语句无法在向量 (C++) 中提供最大值
- 如何使用可变参数模板类使用模板元编程获得最大值
- C++不同的最小最大值实现
- Vec3b:r/g/b 颜色的最大值为 254,而不是 255
- CUDA - 将 float3 数组的 (x,y,z) 分量的最小值/最大值分开?
- 是否可以将无符号 int 的最大值转换为 int 并将结果转换为 -1?
- 查找包含 N 个元素的数组的最小值和最大值
- 井字游戏具有奇怪行为的最小最大值算法(C++)
- 同样的逻辑适用于 c++,但在 python 中不适用于堆栈中的最大值,我的代码中是否缺少一些东西
- 在Python与C 中找到最大值