Sự khác biệt về hiệu năng giữa biểu hiện máy phát điện và danh sách hiểu rất dễ dàng để đo:
python --version && python -m timeit -s \
"import argparse; l = [argparse.Namespace(a=str(i)) for i in range(1000000)]" \
"''.join(obj.a for obj in l)"
Python 2.7.12
10 loops, best of 3: 87.2 msec per loop
python --version && python -m timeit -s \
"import argparse; l = [argparse.Namespace(a=str(i)) for i in range(1000000)]" \
"''.join([obj.a for obj in l])"
Python 2.7.12
10 loops, best of 3: 77.1 msec per loop
python3.4 --version && python3.4 -m timeit -s \
"import argparse; l = [argparse.Namespace(a=str(i)) for i in range(1000000)]" \
"''.join(obj.a for obj in l)"
Python 3.4.5
10 loops, best of 3: 77.4 msec per loop
python3.4 --version && python3.4 -m timeit -s \
"import argparse; l = [argparse.Namespace(a=str(i)) for i in range(1000000)]" \
"''.join([obj.a for obj in l])"
Python 3.4.5
10 loops, best of 3: 66 msec per loop
python3.5 --version && python3.5 -m timeit -s \
"import argparse; l = [argparse.Namespace(a=str(i)) for i in range(1000000)]" \
"''.join(obj.a for obj in l)"
Python 3.5.2
10 loops, best of 3: 82.8 msec per loop
python3.5 --version && python3.5 -m timeit -s \
"import argparse; l = [argparse.Namespace(a=str(i)) for i in range(1000000)]" \
"''.join([obj.a for obj in l])"
Python 3.5.2
10 loops, best of 3: 64.9 msec per loop
python3.6 --version && python3.6 -m timeit -s \
"import argparse; l = [argparse.Namespace(a=str(i)) for i in range(1000000)]" \
"''.join(obj.a for obj in l)"
Python 3.6.0
10 loops, best of 3: 84.6 msec per loop
python3.6 --version && python3.6 -m timeit -s \
"import argparse; l = [argparse.Namespace(a=str(i)) for i in range(1000000)]" \
"''.join([obj.a for obj in l])"
Python 3.6.0
10 loops, best of 3: 64.7 msec per loop
Nó chỉ ra rằng danh sách hiểu là luôn nhanh hơn phát biểu:
- 2,7: ~ 12% nhanh hơn
- 3.4: ~ 15% nhanh hơn
- 3.5: ~ 22% nhanh hơn
- 3.6: ~ 24% nhanh hơn
Nhưng lưu ý rằng tiêu thụ bộ nhớ cho danh sách hiểu là 2x.
Cập nhật
Dockerfile
bạn có thể chạy trên phần cứng của bạn để có được kết quả của bạn, giống như docker build -t test-so . && docker run --rm test-so
.
FROM saaj/snake-tank
RUN echo '[tox] \n\
envlist = py27,py33,py34,py35,py36 \n\
skipsdist = True \n\
[testenv] \n\
commands = \n\
python --version \n\
python -m timeit -s \\\n\
"import argparse; l = [argparse.Namespace(a=str(i)) for i in range(1000000)]" \\\n\
"str().join(obj.a for obj in l)" \n\
python -m timeit -s \\\n\
"import argparse; l = [argparse.Namespace(a=str(i)) for i in range(1000000)]" \\\n\
"str().join([obj.a for obj in l])"' > tox.ini
CMD tox
bạn có thể cung cấp một ví dụ làm việc của bạn tình và kỳ vọng? – Tbaki