[diffoscope] 05/05: Profile the internal and external "cmp" methods separately.
Chris Lamb
chris at chris-lamb.co.uk
Fri Dec 23 12:46:38 CET 2016
This is an automated email from the git hooks/post-receive script.
lamby pushed a commit to branch master
in repository diffoscope.
commit ca45370cf762c3a7748835f075ca16c2fdd82ede
Author: Chris Lamb <lamby at debian.org>
Date: Fri Dec 23 11:44:14 2016 +0000
Profile the internal and external "cmp" methods separately.
Signed-off-by: Chris Lamb <lamby at debian.org>
---
diffoscope/comparators/binary.py | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/diffoscope/comparators/binary.py b/diffoscope/comparators/binary.py
index a6368d8..9f092e5 100644
--- a/diffoscope/comparators/binary.py
+++ b/diffoscope/comparators/binary.py
@@ -29,6 +29,7 @@ import subprocess
from diffoscope import tool_required, logger
from diffoscope.exc import OutputParsingError, RequiredToolNotFound
from diffoscope.config import Config
+from diffoscope.profiling import profile
from diffoscope.difference import Difference
try:
@@ -187,7 +188,6 @@ class File(object, metaclass=abc.ABCMeta):
difference.add_details(details)
return difference
- @tool_required('cmp')
def has_same_content_as(self, other):
logger.debug('Binary.has_same_content: %s %s', self, other)
# try comparing small files directly first
@@ -200,13 +200,18 @@ class File(object, metaclass=abc.ABCMeta):
return False
if my_size == other_size and my_size <= SMALL_FILE_THRESHOLD:
try:
- with open(self.path, 'rb') as file1, open(other.path, 'rb') as file2:
- return file1.read() == file2.read()
+ with profile('command', 'cmp (internal)'):
+ with open(self.path, 'rb') as file1, open(other.path, 'rb') as file2:
+ return file1.read() == file2.read()
except OSError:
# one or both files could not be opened for some reason,
# assume they are different
return False
+ return self.cmp_external(other)
+
+ @tool_required('cmp')
+ def cmp_external(self, other):
return 0 == subprocess.call(['cmp', '-s', self.path, other.path],
shell=False, close_fds=True)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/diffoscope.git
More information about the diffoscope
mailing list