标题:[讨论]contains()的效率问题
只看楼主
zcx8532
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2005-11-9
 问题点数:0 回复次数:6 
[讨论]contains()的效率问题
GeneralPath类里面的contains()方法是不是效率很低?我感觉用了contains()方法以后程序执行起来明显慢了很多。
搜索更多相关主题的帖子: contains 效率 GeneralPath 
2007-02-01 09:39
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
你可以直接用Shape的contains方法啊

可惜不是你,陪我到最后
2007-02-01 10:00
zcx8532
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2005-11-9
得分:0 
我是要判断一个点是否位于一个做了旋转操作以后的矩形里面,我是这样做的:先把矩形转换成GeneralPath,然后对GeneralPath进行旋转操作,再调用GeneralPath里面的contains()方法来判断。在这种情况下如何调用Shape里面的contains()方法?Shape里面的contains()方法要比GeneralPath里面的contains()方法快吗?

2007-02-01 10:21
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
呵呵,一般来说不会有什么效率问题的,是不是你别的方法效率不高?
一般JAVA的类库都是经过了优化的,不可能效率低下的

可惜不是你,陪我到最后
2007-02-01 10:32
zcx8532
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2005-11-9
得分:0 
public boolean contains(int x, int y){
//(x,y) is in the outer panel's coordinates system
Rectangle2D.Double rectIPS = new Rectangle2D.Double(
topLeftX,topLeftY,imageWidth,imageHeight);
GeneralPath rectPath = new GeneralPath(rectIPS);
rectPath.transform(AffineTransform.getRotateInstance(
angle, (getCenter().x + topLeftX), (getCenter().y + topLeftY)));


return rectPath.contains(x, y);
}
是这样的,如果我把红色部分注释掉,直接调用rectIPS.contain(),速度很快,但是加上红色部分以后速度就变慢了,几乎慢了有2秒钟,我想应该就是GeneralPath里面的contains()方法比较慢吧。但是矩形旋转以后还是矩形,慢也不会慢这么多啊

2007-02-01 10:48
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
那应该是在旋转的时候要计算比较多的地方

可惜不是你,陪我到最后
2007-02-01 11:09
zcx8532
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2005-11-9
得分:0 
嗯,那也有可能

2007-02-01 11:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-119105-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.200752 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved