Debian Bug report logs - #863879
diffoscope: Optimize the common case of feeders.

version graph

Package: src:diffoscope; Maintainer for src:diffoscope is Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>;

Reported by: Daniel Shahaf <danielsh@apache.org>

Date: Thu, 1 Jun 2017 13:39:02 UTC

Severity: wishlist

Tags: patch

Found in version diffoscope/82

Fixed in version diffoscope/91

Done: Mattia Rizzolo <mattia@debian.org>

Bug is archived. No further changes may be made.

Toggle useless messages

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to debian-bugs-dist@lists.debian.org, Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>:
Bug#863879; Package src:diffoscope. (Thu, 01 Jun 2017 13:39:04 GMT) (full text, mbox, link).


Acknowledgement sent to Daniel Shahaf <danielsh@apache.org>:
New Bug report received and forwarded. Copy sent to Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>. (Thu, 01 Jun 2017 13:39:04 GMT) (full text, mbox, link).


Message #5 received at submit@bugs.debian.org (full text, mbox, reply):

From: Daniel Shahaf <danielsh@apache.org>
To: submit@bugs.debian.org
Subject: diffoscope: Optimize the common case of feeders.
Date: Mon, 29 May 2017 15:14:54 +0000
Source: diffoscope
Version: 82
Severity: wishlist
Tags: patch

Dear Maintainer,

Please find attached a patch optimising the feeder codepath.  I don't have
performance numbers, but I expect comparison to the None singleton to be faster
than calling any lambda function.

Cheers,

Daniel

[[[
From f29fb71aba5ed79f9f517c794be2f555b762fe12 Mon Sep 17 00:00:00 2001
From: Daniel Shahaf <danielsh@apache.org>
Date: Mon, 29 May 2017 15:13:53 +0000
Subject: [PATCH 1/2] diffoscope.difference: Optimize the common case.

Don't call a lambda function object.
---
 diffoscope/difference.py | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/diffoscope/difference.py b/diffoscope/difference.py
index ca45041..c1f0537 100644
--- a/diffoscope/difference.py
+++ b/diffoscope/difference.py
@@ -247,9 +247,13 @@ class Difference(object):
         self._visuals.extend(visuals)
         self._size_cache = None
 
-def make_feeder_from_text_reader(in_file, filter=lambda text_buf: text_buf):
-    def encoding_filter(text_buf):
-        return filter(text_buf).encode('utf-8')
+def make_feeder_from_text_reader(in_file, filter=None):
+    if filter:
+        def encoding_filter(text_buf):
+            return filter(text_buf).encode('utf-8')
+    else:
+        def encoding_filter(text_buf):
+            return text_buf.encode('utf-8')
     return make_feeder_from_raw_reader(in_file, encoding_filter)
 
 def make_feeder_from_command(command):
@@ -264,7 +268,7 @@ def make_feeder_from_command(command):
         return end_nl
     return feeder
 
-def make_feeder_from_raw_reader(in_file, filter=lambda buf: buf):
+def make_feeder_from_raw_reader(in_file, filter=None):
     def feeder(out_file):
         max_lines = Config().max_diff_input_lines
         line_count = 0
@@ -274,7 +278,7 @@ def make_feeder_from_raw_reader(in_file, filter=lambda buf: buf):
             h = hashlib.sha1()
         for buf in in_file:
             line_count += 1
-            out = filter(buf)
+            out = filter(buf) if filter else buf
             if h:
                 h.update(out)
             if line_count < max_lines:
]]]



Information forwarded to debian-bugs-dist@lists.debian.org, Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>:
Bug#863879; Package src:diffoscope. (Wed, 03 Jan 2018 20:21:04 GMT) (full text, mbox, link).


Acknowledgement sent to Chris Lamb <lamby@debian.org>:
Extra info received and forwarded to list. Copy sent to Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>. (Wed, 03 Jan 2018 20:21:04 GMT) (full text, mbox, link).


Message #10 received at 863879@bugs.debian.org (full text, mbox, reply):

From: Chris Lamb <lamby@debian.org>
To: 863879@bugs.debian.org
Cc: Daniel Shahaf <danielsh@apache.org>
Subject: Re: diffoscope: Optimize the common case of feeders.
Date: Wed, 03 Jan 2018 20:20:25 +0000
tags 863879 + pending
thanks

Thanks for this, I've gone ahead and applied it here after making it
check against `None` explicitly rather than `False`-ness as this is
more idiomatic IMHO:

  https://anonscm.debian.org/git/reproducible/diffoscope.git/commit/?id=11370138e95176ba083bb0ad0876be7c5f4b568d

I did a quick and unreliable benchmark on two NetBSD images - it went
from 48.825s → 46.981s… so there is at least no regression :)

Thanks again :)


Best wishes,

-- 
      ,''`.
     : :'  :     Chris Lamb
     `. `'`      lamby@debian.org / chris-lamb.co.uk
       `-



Added tag(s) pending. Request was from Chris Lamb <lamby@debian.org> to control@bugs.debian.org. (Wed, 03 Jan 2018 20:21:07 GMT) (full text, mbox, link).


Reply sent to Mattia Rizzolo <mattia@debian.org>:
You have taken responsibility. (Thu, 01 Mar 2018 13:09:08 GMT) (full text, mbox, link).


Notification sent to Daniel Shahaf <danielsh@apache.org>:
Bug acknowledged by developer. (Thu, 01 Mar 2018 13:09:08 GMT) (full text, mbox, link).


Message #17 received at 863879-close@bugs.debian.org (full text, mbox, reply):

From: Mattia Rizzolo <mattia@debian.org>
To: 863879-close@bugs.debian.org
Subject: Bug#863879: fixed in diffoscope 91
Date: Thu, 01 Mar 2018 13:05:09 +0000
Source: diffoscope
Source-Version: 91

We believe that the bug you reported is fixed in the latest version of
diffoscope, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 863879@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Mattia Rizzolo <mattia@debian.org> (supplier of updated diffoscope package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Thu, 01 Mar 2018 13:40:48 +0100
Source: diffoscope
Binary: diffoscope
Architecture: source
Version: 91
Distribution: unstable
Urgency: medium
Maintainer: Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>
Changed-By: Mattia Rizzolo <mattia@debian.org>
Description:
 diffoscope - in-depth comparison of files, archives, and directories
Closes: 849386 863879 863880 877726 886736 886963 887180 888112 888401 888402 890528
Changes:
 diffoscope (91) unstable; urgency=medium
 .
   [ Mattia Rizzolo ]
   * d/clean: Remove .cache/.
   * diff: Wrap long regular expression for improved readability.
   * comparators.json: Fix UnicodeDecodeError with a non-UTF8 locale.
   * d/copyright: Update for the new year.
   * d/control: Bump Standards-Version to 4.1.3, no changes needed.
   * tests/android:
     + Skip tests involving abootimg on BE archs (see #725729).
 .
   [ Daniel Shahaf ]
   * diffoscope.diff: Document feeders.  Closes: #863880
   * Optimize the common case of feeders.  Closes: #863879
 .
   [ Juliana Oliveira ]
   * {tempfiles, utils.archive}: catch possible FileNotFoundError.
   * comparators.java: add support for procyon-decompiler.  Closes: #849386
   * {command, feeders, diff}: replaces subprocess.Popen() by .run().
     This is done in preparation for work on multiprocessing (#842837).
     + {command, zip, feeders}: replaces .wait by the new .returncode property.
     + comparators.utils.command: replaces .stderr_content by .stderr.
   * tests:
     + test_progress: fix test case for some broken versions of
       python-progressbar.  Closes: #877726
     + utils.tools: add support for modules on skip_unless* annotations.
 .
   [ Chris Lamb ]
   * comparators:
     + utils/compare:
       - Show extended filesystem metadata even when directly comparing two
         files, not just when we specify two directories.  Closes: #888402
     + macho:
       - If the If the LLVM disassembler does not work, try the
         internal one.  Closes: #886736
       - Always strip the filename, not just when by itself.
     + json:
       - Do some cheap fuzzy parsing to detect JSON files not named .json.
       - Also match unicode JSON files.
       - Optionally compare JSONs with the jsondiff module.  Closes: #888112
     + directory:
       - Report differences in extended file attributes when comparing files.
         Closes: #888401
     + xsb:
       - Add support for comparing XMLBeans binary schemas.
     + barkeley_db:
       - Add support for comparing Berkeley DB files.  Closes: #890528
   * Misc code cleaup.
   * tests:
     + comparators.test_elf: Return '0' if we can't parse the readelf
       version number.  Closes: #886963
   * debian:
     + Explicitly build-depend and recommend e2fsprogs.  Closes: #887180
 .
   [ Ximin Luo ]
   * Partially revert the changes done for #888402 to maintain the current.
     behaviour of --exclude-directory-metadata.
   * Refactor how the configuration is loaded:
     + Move the defaults into a Config.reset() method.
     + reset() the configuration at the end of main(), to help the testsuite.
Checksums-Sha1:
 cf78d47c07e0cea4b0d667c02a0beff82b2cb28b 3429 diffoscope_91.dsc
 f10a233ff4469d6405eac3bc6c03da6d33962efb 8935512 diffoscope_91.tar.xz
 1413267eea08eb05b0664a4ba13b46abc50a9df7 20151 diffoscope_91_amd64.buildinfo
Checksums-Sha256:
 28e12196a5e461349d1cfdfa96bb3914337f6bd6327d13637de80a5bedd08169 3429 diffoscope_91.dsc
 12034827db747b831b0c80a340f607c8ac4b85936610d38985135941b8a4f0ee 8935512 diffoscope_91.tar.xz
 a456c23241bed0e2dc6230a03e3f7897ad9a715f54da1e662b4f7864c0804d5f 20151 diffoscope_91_amd64.buildinfo
Files:
 4a1c8bd026d379c91fec4db88eee3679 3429 devel optional diffoscope_91.dsc
 a72769fc6dc5f80c6a31b8730234444a 8935512 devel optional diffoscope_91.tar.xz
 728e5ffa6fff19b50c3baf3dfe0a2ee6 20151 devel optional diffoscope_91_amd64.buildinfo

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEi3hoeGwz5cZMTQpICBa54Yx2K60FAlqX9qYACgkQCBa54Yx2
K62jGg/+J2JLNEmq/nVoNa182wyzTzerZVy03V5Pc4WBt1pyZ4DPbvDrAhZvWZmP
qBXr54UxkbbNfXa+fYAph4xr7D5xL4olDEOFRcDf5UJfGwdjaravc6CeE1z915eW
IJkFIOd17ySKlxM5RAVQ1xtQqXiCsBBHa4W2XryleNivJOSOKotEbkEul8MrregE
HREtWF76l7t5Mas2bFxD0xjYAfIYgB8vDLCFnsoOHsqUKksf2PYr60ge2CmCLKUO
Lw/gTcXD+T8k6UBoC2HXmU/2Wgsd9KClAOHUWwdJK78akvvjSC+zBfcewW1vtM1P
lVui0SjSmd7K3suNZgNnrCboKpq7J8ULR8g1GikElxV6orkDsmhX5SfqgsiqWsqw
yZbm1VHRBtOawnQUD8U2bLqVZsTOsE5JMF7ehHjGehEgoCgg3oNTbY8cIAWyd8y/
erk43kNYKhYdHbEfpvGRJekSvJOS8BY4h94ThJ1B4dElUhMzESJ5Fa2S/Ik3fyDS
WKWY8rS3WSons4WL+yjvd7Y2hfuf/IWt6XaG2rge3ODJlwD3BxFrLg7NzkNhH7NJ
a1yITYx2JbMahQZQribpkdPiFcx38y0LcAT25br8AY+asa0fr7qPOfshQfytFiIs
bDfMRuWM5I6KsCwvE4Gtjrawrux03EdbB0piGQzWKpfAmO3qqdE=
=L47V
-----END PGP SIGNATURE-----




Bug archived. Request was from Debbugs Internal Request <owner@bugs.debian.org> to internal_control@bugs.debian.org. (Wed, 02 May 2018 07:32:42 GMT) (full text, mbox, link).


Send a report that this bug log contains spam.


Debian bug tracking system administrator <owner@bugs.debian.org>. Last modified: Wed May 17 13:49:10 2023; Machine Name: buxtehude

Debian Bug tracking system

Debbugs is free software and licensed under the terms of the GNU Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.

Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.