• J
    mingw: use OpenSSL's SHA-1 routines · 2cfc70f0
    Jeff Hostetler 提交于
    Use OpenSSL's SHA-1 routines rather than builtin block-sha1 routines.
    This improves performance on SHA1 operations on Intel processors.
    
    OpenSSL 1.0.2 has made considerable performance improvements and
    support the Intel hardware acceleration features.  See:
    https://software.intel.com/en-us/articles/improving-openssl-performance
    https://software.intel.com/en-us/articles/intel-sha-extensions
    
    To test this I added/staged a single file in a gigantic
    repository having a 450MB index file.  The code in read-cache.c
    verifies the header SHA as it reads the index and computes a new
    header SHA as it writes out the new index.  Therefore, in this test
    the SHA code must process 900MB of data.  Testing was done on an
    Intel I7-4770 CPU @ 3.40GHz (Intel64, Family 6, Model 60) CPU.
    
    The block-sha1 version averaged 5.27 seconds.
    The OpenSSL    version averaged 4.50 seconds.
    
    ================================================================
    
    $ echo xxx >> project.mk
    $ time /e/blk_sha/bin/git.exe add project.mk
    
    real    0m5.207s
    user    0m0.000s
    sys     0m0.250s
    
    $ echo xxx >> project.mk
    $ time /e/blk_sha/bin/git.exe add project.mk
    
    real    0m5.362s
    user    0m0.015s
    sys     0m0.234s
    
    $ echo xxx >> project.mk
    $ time /e/blk_sha/bin/git.exe add project.mk
    
    real    0m5.300s
    user    0m0.016s
    sys     0m0.250s
    
    $ echo xxx >> project.mk
    $ time /e/blk_sha/bin/git.exe add project.mk
    
    real    0m5.216s
    user    0m0.000s
    sys     0m0.250s
    
    ================================================================
    $ echo xxx >> project.mk
    $ time /e/openssl/bin/git.exe add project.mk
    
    real    0m4.431s
    user    0m0.000s
    sys     0m0.250s
    
    $ echo xxx >> project.mk
    $ time /e/openssl/bin/git.exe add project.mk
    
    real    0m4.478s
    user    0m0.000s
    sys     0m0.265s
    
    $ echo xxx >> project.mk
    $ time /e/openssl/bin/git.exe add project.mk
    
    real    0m4.690s
    user    0m0.000s
    sys     0m0.250s
    
    $ echo xxx >> project.mk
    $ time /e/openssl/bin/git.exe add project.mk
    
    real    0m4.420s
    user    0m0.000s
    sys     0m0.234s
    
    ================================================================
    Signed-off-by: NJeff Hostetler <jeffhost@microsoft.com>
    Signed-off-by: NJohannes Schindelin <johannes.schindelin@gmx.de>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    2cfc70f0
config.mak.uname 16.7 KB