小编Kee*_*Jay的帖子

Python和C++之间不同寻常的速度差异

我最近写了一个简短的算法来计算python中的快乐数字.该程序允许您选择一个上限,它将确定它下面的所有快乐数字.为了进行速度比较,我决定将我所知道的算法从python直接翻译成c ++.

令人惊讶的是,c ++版本的运行速度明显慢于python版本.在发现前10,000个满意数字的执行时间之间进行准确的速度测试表明python程序平均在0.59秒内运行,而c ++版本平均在8.5秒内运行.

我将这个速度差异归结为我必须在c ++版本中编写部分计算的辅助函数(例如,确定元素是否在列表/数组/向量中),这些函数已经内置到python语言中.

首先,这是否是这种荒谬的速度差异的真正原因,其次,如何更改c ++版本以比python版本更快地执行(在我看来应该如此).

带有速度测试的两段代码在这里:Python Version,C++ Version.谢谢您的帮助.

#include <iostream>
#include <vector>
#include <string>
#include <ctime>
#include <windows.h>

using namespace std;

bool inVector(int inQuestion, vector<int> known);
int sum(vector<int> given);
int pow(int given, int power);
void calcMain(int upperBound);

int main()
{
    while(true)
    {
        int upperBound;
        cout << "Pick an upper bound: ";
        cin >> upperBound;
        long start, end;
        start = GetTickCount();
        calcMain(upperBound);
        end = GetTickCount();
        double seconds = (double)(end-start) / 1000.0; …
Run Code Online (Sandbox Code Playgroud)

c++ python algorithm performance

37
推荐指数
5
解决办法
1万
查看次数

从相同长度的元组添加值

在我使用pygame编写的图形程序中,我使用代表如下坐标的元组:(50,50).

有时,我调用一个返回另一个元组的函数,如(3,-5),它表示坐标的变化.

将更改值添加到坐标值的最佳方法是什么.如果我可以做一些像坐标+ =更改这样的东西会很好,但似乎只是将两个元组连接成类似(50,50,3,-5)的东西.而不是将第一个值添加到第一个值和第二个到第二个,并返回一个结果元组.

到目前为止,我一直在使用这种相当无聊的方法:coord =(coord [0] + change [0],coord [1] + change [1])

什么是更好,更简洁的方法来将两个相同长度的元组的值相加.如果元组具有任意长度或特别长的长度会使先前的方法更加无聊,那么知道如何做到这一点似乎尤为重要.

python

18
推荐指数
3
解决办法
2万
查看次数

我可以在显示之前获得正确的JComponent大小吗?

何时计算JComponent的大小?在屏幕上显示之后或之前?如果我.getSize()之前发送消息.setVisible(true),它会给我正确答案吗?谢谢

java swing jcomponent

8
推荐指数
4
解决办法
2599
查看次数

标签 统计

python ×2

algorithm ×1

c++ ×1

java ×1

jcomponent ×1

performance ×1

swing ×1