gecko/python
Gregory Szorc 2a5babf470 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
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
futures
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
pyasn1
pyasn1-modules
PyECC
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
slugid
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
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/