[PATCH 09 of 10] store: reduce string concatenation when joining

Bryan O'Sullivan bos at serpentine.com
Thu Sep 13 14:01:22 CDT 2012


# HG changeset patch
# User Bryan O'Sullivan <bryano at fb.com>
# Date 1347562631 25200
# Node ID 2e017b25e1c9c13566990d601deafb24c2f665c5
# Parent  168fa28b4620b30505e8284bcee5a0cf0d0b6338
store: reduce string concatenation when joining

This improves stream_out performance by a couple of percent.

diff --git a/mercurial/store.py b/mercurial/store.py
--- a/mercurial/store.py
+++ b/mercurial/store.py
@@ -390,6 +390,7 @@
     def __init__(self, path, openertype, encode):
         self.encode = encode
         self.path = path + '/store'
+        self.pathsep = self.path + '/'
         self.createmode = _calcmode(self.path)
         op = openertype(self.path)
         op.createmode = self.createmode
@@ -398,10 +399,10 @@
         self.opener = _fncacheopener(op, fnc, encode)
 
     def join(self, f):
-        return self.path + '/' + self.encode(f)
+        return self.pathsep + self.encode(f)
 
     def getsize(self, path):
-        return os.stat(self.path + '/' + path).st_size
+        return os.stat(self.pathsep + path).st_size
 
     def datafiles(self):
         rewrite = False


More information about the Mercurial-devel mailing list