##// END OF EJS Templates
perf: split obtaining chunks from decompression...
perf: split obtaining chunks from decompression Previously, the code was similar to what revlog._chunks() was doing, which took a raw data segment and delta chain, obtained buffers for the raw revlog chunks within, and decompressed them. This commit splits the "get raw chunks" action from "decompress." The goal of this change is to more accurately measurely decompression performance. On a ~50k deltachain for a manifest in mozilla-central: ! full ! wall 0.430548 comb 0.440000 user 0.410000 sys 0.030000 (best of 24) ! deltachain ! wall 0.016053 comb 0.010000 user 0.010000 sys 0.000000 (best of 181) ! read ! wall 0.008078 comb 0.010000 user 0.000000 sys 0.010000 (best of 362) ! rawchunks ! wall 0.033785 comb 0.040000 user 0.040000 sys 0.000000 (best of 100) ! decompress ! wall 0.327126 comb 0.320000 user 0.320000 sys 0.000000 (best of 31) ! patch ! wall 0.032391 comb 0.030000 user 0.030000 sys 0.000000 (best of 100) ! hash ! wall 0.012587 comb 0.010000 user 0.010000 sys 0.000000 (best of 233)

File last commit:

r30822:b54a2984 default
r30882:74cfc435 default
Show More
setup.py
69 lines | 1.9 KiB | text/x-python | PythonLexer
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435 #!/usr/bin/env python
# Copyright (c) 2016-present, Gregory Szorc
# All rights reserved.
#
# This software may be modified and distributed under the terms
# of the BSD license. See the LICENSE file for details.
Gregory Szorc
zstd: vendor python-zstandard 0.6.0...
r30822 import sys
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435 from setuptools import setup
try:
import cffi
except ImportError:
cffi = None
import setup_zstd
Gregory Szorc
zstd: vendor python-zstandard 0.6.0...
r30822 SUPPORT_LEGACY = False
if "--legacy" in sys.argv:
SUPPORT_LEGACY = True
sys.argv.remove("--legacy")
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435 # Code for obtaining the Extension instance is in its own module to
# facilitate reuse in other projects.
Gregory Szorc
zstd: vendor python-zstandard 0.6.0...
r30822 extensions = [setup_zstd.get_c_extension(SUPPORT_LEGACY, 'zstd')]
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435
if cffi:
import make_cffi
extensions.append(make_cffi.ffi.distutils_extension())
version = None
with open('c-ext/python-zstandard.h', 'r') as fh:
for line in fh:
if not line.startswith('#define PYTHON_ZSTANDARD_VERSION'):
continue
version = line.split()[2][1:-1]
break
if not version:
raise Exception('could not resolve package version; '
'this should never happen')
setup(
name='zstandard',
version=version,
description='Zstandard bindings for Python',
long_description=open('README.rst', 'r').read(),
url='https://github.com/indygreg/python-zstandard',
author='Gregory Szorc',
author_email='gregory.szorc@gmail.com',
license='BSD',
classifiers=[
'Development Status :: 4 - Beta',
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License',
'Programming Language :: C',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
],
keywords='zstandard zstd compression',
ext_modules=extensions,
test_suite='tests',
)