gecko-dev/python
Gregory Szorc 2f5add2222 Bug 1249210 - Install files using multiple threads on Windows; r=glandium
As previous measurements have shown, creating/appending files
on Windows/NTFS is slow because the CloseHandle() Win32 API takes
1-3ms to complete. This is apparently due to a fundamental issue
with NTFS extents. A way to work around this slowness is to use
multiple threads for I/O so file closing doesn't block execution
as much.

This commit updates the file copier to use a thread pool of 4
threads when processing file copies. Additional threads appear
to have diminishing returns.

On my i7-6700K, this reduces the time for processing the tests install
manifest (24,572 files) on Windows from ~22.0s to ~12.5s in the best
case.

Using the thread pool globally resulted in a performance regression
on Linux. Given the performance sensitivity of manifest copying,
I thought it best to implement a slightly redundant non-Windows
branch to preserve performance. For the record, that same machine
running Linux is capable of processing nearly the same install
manifest (24,616 files) in ~2.2s in the best case.

MozReview-Commit-ID: B9LbKaOoO1u

--HG--
extra : rebase_source : e9fee3861a70e1da9d18448f8435f4bd3e28c647
2016-02-19 18:28:26 -08:00
..
bitstring
blessings
compare-locales Backed out changeset a87a27864bb8 (bug 1223385) 2016-01-15 13:51:54 +01:00
configobj
eme Bug 1139125 - Add Windows 64-bit support and certificate chain support to Adobe EME voucher tool. r=ted 2015-05-15 15:26:52 +12:00
futures bug 1164816 - Import concurrent.futures into the tree. r=gps 2015-05-12 14:52:06 -04:00
jsmin
lldbutils Bug 1235261 - Part 4: Remove AutoFallibleTArray. r=froydnj 2016-02-02 17:36:30 +02:00
mach Bug 1239296 - add post_dispatch_handler hook to mach r=gps 2016-02-09 10:09:17 -05:00
mock-1.0.0
mozboot Bug 1245684 - Download bootstrap files via a zip archive; r=mshal 2016-02-09 14:41:32 -08:00
mozbuild Bug 1249210 - Install files using multiple threads on Windows; r=glandium 2016-02-19 18:28:26 -08:00
mozversioncontrol/mozversioncontrol Bug 1225599 - Pull Mercurial repos with common 3rd party extensions disabled; r=dminor 2015-12-15 10:47:33 -08:00
psutil Bug 1196253 - update in-tree psutil to 3.1.1. r=gps 2015-08-20 08:03:31 -04:00
pyasn1
pyasn1-modules bug 1166976 - add pyasn1-modules python library r=ted,gerv 2015-05-20 16:33:23 -07:00
PyECC bug 1190603 - import PyECC library r=gps,gerv 2015-08-03 15:17:00 -07:00
pystache
pyyaml
redo
requests Bug 1247994 - Upgrade vendored requests package to 2.9.1; r=mshal 2016-02-12 10:03:53 -08:00
rsa bug 1166976 - add Python-RSA python library r=ted,gerv 2015-05-20 16:34:03 -07:00
slugid Bug 1194767 - use slugid 1.0.6 in ./mach taskcluster-graph command. r=wcosta 2015-09-04 17:59:34 +02:00
virtualenv Bug 1242228 - Upgrade virtualenv to 14.0.1; r=mshal 2016-01-23 18:48:43 -08:00
which
mach_commands.py Bug 1248360 - Set eslint version to 1.10.3 when setting it up via mach 2016-02-16 10:01:11 +01:00
moz.build Bug 1229233 - Add a (incomplete) end-to-end build test. r=gps 2015-12-01 13:57:52 +09:00
README

This directory contains common Python code.

The basic rule is that if Python code is cross-module (that's "module" in the
Mozilla meaning - as in "module ownership") and is MPL-compatible, it should
go here.

What should not go here:

* Python that is not MPL-compatible (see other-licenses/)
* Python that has good reason to remain close to its "owning" (Mozilla)
  module (e.g. it is only being consumed from there).

Historical information can be found at
https://bugzilla.mozilla.org/show_bug.cgi?id=775243

## pyyaml | pystache

Used in taskcluster related mach commands to update download from github
and remove .git and tests.

Then run tests in taskcluster/tests/