Author: stack Date: Fri Jun 13 12:53:23 2008 New Revision: 667631 URL: http://svn.apache.org/viewvc?rev=667631&view=rev Log: HBASE-682 unnecessary iteration in HMemcache.internalGet? got much better reading performance after break it.
Modified: hadoop/hbase/trunk/CHANGES.txt hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/Memcache.java Modified: hadoop/hbase/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=667631&r1=667630&r2=667631&view=diff ============================================================================== --- hadoop/hbase/trunk/CHANGES.txt (original) +++ hadoop/hbase/trunk/CHANGES.txt Fri Jun 13 12:53:23 2008 @@ -47,8 +47,11 @@ HBASE-662 UI in table.jsp gives META locations, not the table's regions location (Jean-Daniel Cryans via Stack) HBASE-676 Bytes.getInt returns a long (Clint Morgan via Stack) - HBASE-680 config parameter hbase.io.index.interval should be + HBASE-680 Config parameter hbase.io.index.interval should be hbase.index.interval, according to HBaseMapFile.HbaseWriter + (LN via Stack) + HBASE-682 Unnecessary iteration in HMemcache.internalGet? got much better + reading performance after break it (LN via Stack) IMPROVEMENTS HBASE-559 MR example job to count table rows Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/Memcache.java URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/Memcache.java?rev=667631&r1=667630&r2=667631&view=diff ============================================================================== --- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/Memcache.java (original) +++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/Memcache.java Fri Jun 13 12:53:23 2008 @@ -514,6 +514,9 @@ if (ttl == HConstants.FOREVER || now < itKey.getTimestamp() + ttl) { result.add(new Cell(tailMap.get(itKey), itKey.getTimestamp())); + if (numVersions > 0 && result.size() >= numVersions) { + break; + } } else { victims.add(itKey); if (LOG.isDebugEnabled()) { @@ -521,15 +524,15 @@ } } } - } - if (numVersions > 0 && result.size() >= numVersions) { + } else { + // By L.N. HBASE-684, map is sorted, so we can't find match any more. break; } } // Remove expired victims from the map. - for (HStoreKey v: victims) + for (HStoreKey v: victims) { map.remove(v); - + } return result; } @@ -735,4 +738,4 @@ } } } -} \ No newline at end of file +}