我最近写了一个简短的算法来计算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) 在我使用pygame编写的图形程序中,我使用代表如下坐标的元组:(50,50).
有时,我调用一个返回另一个元组的函数,如(3,-5),它表示坐标的变化.
将更改值添加到坐标值的最佳方法是什么.如果我可以做一些像坐标+ =更改这样的东西会很好,但似乎只是将两个元组连接成类似(50,50,3,-5)的东西.而不是将第一个值添加到第一个值和第二个到第二个,并返回一个结果元组.
到目前为止,我一直在使用这种相当无聊的方法:coord =(coord [0] + change [0],coord [1] + change [1])
什么是更好,更简洁的方法来将两个相同长度的元组的值相加.如果元组具有任意长度或特别长的长度会使先前的方法更加无聊,那么知道如何做到这一点似乎尤为重要.
何时计算JComponent的大小?在屏幕上显示之后或之前?如果我.getSize()
之前发送消息.setVisible(true)
,它会给我正确答案吗?谢谢