Nick Pope
|
b47f2f5b90
|
Fixed #33865 -- Optimized LimitedStream wrapper.
The current implementation of LimitedStream is slow because .read()
performs an extra copy into a buffer and .readline() performs two
extra copies. The stream being wrapped is already typically a BytesIO
object so this is unnecessary.
This implementation has largely been untouched for 12 years and,
inspired by a simpler implementation in werkzeug, it was possible to
achieve the following performance improvement:
LimitedStream.read() (single line):
Mean +- std dev: [bench_limitedstream-main] 286 ns +- 6 ns
-> [bench_limitedstream-patch] 227 ns +- 6 ns: 1.26x faster
LimitedStream.readline() (single line):
Mean +- std dev: [bench_limitedstream-main] 507 ns +- 11 ns
-> [bench_limitedstream-patch] 232 ns +- 8 ns: 2.18x faster
LimitedStream.read(8192) (single line):
Mean +- std dev: [bench_limitedstream-main] 360 ns +- 8 ns
-> [bench_limitedstream-patch] 297 ns +- 6 ns: 1.21x faster
LimitedStream.readline(8192) (single line):
Mean +- std dev: [bench_limitedstream-main] 602 ns +- 10 ns
-> [bench_limitedstream-patch] 305 ns +- 10 ns: 1.98x faster
LimitedStream.read() (multiple lines):
Mean +- std dev: [bench_limitedstream-main] 290 ns +- 5 ns
-> [bench_limitedstream-patch] 236 ns +- 6 ns: 1.23x faster
LimitedStream.readline() (multiple lines):
Mean +- std dev: [bench_limitedstream-main] 517 ns +- 19 ns
-> [bench_limitedstream-patch] 239 ns +- 7 ns: 2.16x faster
LimitedStream.read(8192) (multiple lines):
Mean +- std dev: [bench_limitedstream-main] 363 ns +- 8 ns
-> [bench_limitedstream-patch] 311 ns +- 11 ns: 1.17x faster
LimitedStream.readline(8192) (multiple lines):
Mean +- std dev: [bench_limitedstream-main] 601 ns +- 12 ns
-> [bench_limitedstream-patch] 308 ns +- 7 ns: 1.95x faster
Geometric mean: 1.59x faster
|
2023-01-05 19:26:56 +01:00 |
|
django-bot
|
9c19aff7c7
|
Refs #33476 -- Reformatted code with Black.
|
2022-02-07 20:37:05 +01:00 |
|
Tom Forbes
|
141ab6bc6d
|
Refs #29069 -- Added test for calling request_finished signal by static file responses.
Fixed in 41a3b3d186 .
|
2020-04-20 06:17:57 +02:00 |
|
Florian Apolloner
|
41a3b3d186
|
Fixed #31240 -- Properly closed FileResponse when wsgi.file_wrapper is used.
Thanks to Oskar Persson for the report.
|
2020-02-11 20:39:12 +01:00 |
|
Min ho Kim
|
7bd9633320
|
Fixed typos in test names and a comment.
|
2019-08-23 10:46:43 +02:00 |
|
chillaranand
|
d6eaf7c018
|
Refs #23919 -- Replaced super(ClassName, self) with super().
|
2017-01-25 12:23:46 -05:00 |
|
Claude Paroz
|
042b7350a0
|
Refs #23919 -- Removed unneeded str() calls
|
2017-01-20 14:13:55 +01:00 |
|
Simon Charette
|
cecc079168
|
Refs #23919 -- Stopped inheriting from object to define new style classes.
|
2017-01-19 08:39:46 +01:00 |
|
Claude Paroz
|
d7b9aaa366
|
Refs #23919 -- Removed encoding preambles and future imports
|
2017-01-18 09:55:19 +01:00 |
|
Tim Graham
|
7b05ffd95d
|
Removed a bit of builtin_server tests for Python ≤ 2.7.3.
|
2016-11-10 22:20:09 -05:00 |
|
za
|
321e94fa41
|
Refs #27392 -- Removed "Tests that", "Ensures that", etc. from test docstrings.
|
2016-11-10 21:30:21 -05:00 |
|
Tim Graham
|
0ed7d15563
|
Sorted imports with isort; refs #23860.
|
2015-02-06 08:16:28 -05:00 |
|
Ramiro Morales
|
9a982d5ccc
|
Moved ServerHandler helper class to tests.
It has been only used in the builtin_servers tests since Django 1.4.
|
2014-03-30 20:55:40 -03:00 |
|
Aymeric Augustin
|
cfcf4b3605
|
Stopped using django.utils.unittest in the test suite.
Refs #20680.
|
2013-07-01 14:29:33 +02:00 |
|
Matthew Wood
|
a7960bcb35
|
Fixed #18972 -- Refactored bundled wsgi server's chunking algorithm.
Thanks to amosonn at yahoo.com for the report, @doda for the initial patch and
@datagrok for the revamped logic and test case.
|
2013-03-20 18:46:26 -04:00 |
|
Florian Apolloner
|
89f40e3624
|
Merged regressiontests and modeltests into the test root.
|
2013-02-26 14:36:57 +01:00 |
|