不可不说
随心所欲,无往不利!
posts - 18,  comments - 42,  trackbacks - 0
在研究SS2的时候,把Source存放到数据库中,进行角色配置,SS2把这些资源角色读取到一个Map中
在得到一个URL请求时,使用这个URL遍历这个Map,查找是否存在这个Key,如果有,则取出对应的角色。
问题就在这个遍历Map上,源代码如下
    private ConfigAttributeDefinition lookupUrlInMap(Map requestMap, String url) {
        Iterator entries 
= requestMap.entrySet().iterator();

        
while (entries.hasNext()) {
            Map.Entry entry 
= (Map.Entry) entries.next();
            Object p 
= entry.getKey();
            
boolean matched = urlMatcher.pathMatchesUrl(p, url);

            
if (logger.isDebugEnabled()) {
                logger.debug(
"Candidate is: '" + url + "'; pattern is " + p + "; matched=" + matched);
            }

            
if (matched) {
                
return (ConfigAttributeDefinition) entry.getValue();
            }
        }

        
return null;
    }
这个Method中一上来就作遍历循环,为什么不先利用Map的特性直接先取一次,如果取得到,直接就返回了,
如果取不到,再遍历查找,这样可以提高命中率,从而提高性能,如果找不到,这一次的Map查找性能应该
也不是很低吧?
    private ConfigAttributeDefinition lookupUrlInMap(Map requestMap, String url) {
       
ConfigAttributeDefinition cad = (ConfigAttributeDefinition)requestMap.get(url);
        if(cad != null) {
            return cad;
        }
          
        Iterator entries = requestMap.entrySet().iterator();

        
while (entries.hasNext()) {
            Map.Entry entry 
= (Map.Entry) entries.next();
            Object p 
= entry.getKey();
            
boolean matched = urlMatcher.pathMatchesUrl(p, url);

            
if (logger.isDebugEnabled()) {
                logger.debug(
"Candidate is: '" + url + "'; pattern is " + p + "; matched=" + matched);
            }

            
if (matched) {
                
return (ConfigAttributeDefinition) entry.getValue();
            }
        }

        
return null;
    }

当然,这要权衡系统URL配置的特性,诸如xxx*这种类型的配置多的话,还是原来的方式快一点,如果直接xxx
这种方式多得话,我说的方式就要快一些。
总之,没有最好,只有更好!



posted on 2008-09-02 21:04 蓝剑 阅读(834) 评论(1)  编辑  收藏

FeedBack:
# re: Spring Security 2资源-角色查找源码研究及性能改进[未登录]
2008-09-03 09:22 | Hibernating
看过你的评论了,能具体说说在2.0应该怎么做吗?我也事参照1.x实现的。  回复  更多评论
  

标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-09-02 21:58 编辑过
 
 

推荐图书:
走出软件作坊》、《悟透JavaScript》、《Head First 设计模式
相关链接:
网站导航:




<2008年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用链接

留言簿

随笔档案(20)

文章档案(8)

友情链接

搜索

  •  

积分与排名

  • 积分 - 25509
  • 排名 - 386

最新评论

阅读排行榜

评论排行榜