我正在制作一个blobscanner,目前我每秒大约有130帧。我有一个名为cornerPoints的矢量数组。如果我使用:cornerPoints[i].x = x;
,那么我的frameRate高于100.如果我使用:
cornerPoints[i].x = x+1;
或:
cornerPoints[i].x = x;
cornerPoints[i].x ++;
然后我的frameRate下降约100帧。它怎么会产生如此大的影响? 可以做些什么。
protected void indexesToXY(int width, int height) {
int x;
for (int i = 0; i < nOfCornerIndexes; i++) {
x = cornerIndexes[i] % width;
// if i use x + 1 the frame rate drops with about 100 frames
cornerPoints[i].x = x;
cornerPoints[i].y = (cornerIndexes[i] - x) / width;
}
nOfCornerPoints = nOfCornerIndexes;
}
答案 0 :(得分:1)
尝试
x = cornerIndexes[i] % width + 1;
cornerPoints[i].x = x;
但是,我认为性能下降并非来自增加的成本。在您的程序的其他部分中,cornerPoints的值可能还有其他一些影响。
答案 1 :(得分:0)
我说它相当不可能。这种添加比模数,除法和数组访问等其他操作便宜得多。
可能的是,更改后的数据会对不同的代码产生一些影响。这就是为什么需要SSCCE(如评论中所述)。
查看生成的程序集(不是字节码!)可以告诉我们更多信息。有了SSCCE,人们就有机会对它产生兴趣,并且会花很多时间进行分析(没有SSCCE就没有希望)。