DBDelve
Dive deep into your data. A fast, native, multi-engine database client written in Rust. Free and open source, no telemetry.
翻译准备中
Drop-in Pillow 13 with SIMD kernels: about 6x faster on x86-64 (SSE4.1, AVX2, AVX-VNNI) and 3x on arm64 (NEON). Wheels on PyPI. A fork of Pillow-SIMD.
翻译准备中
正在加载完整 README。
查看完整 README ↗Pillow 13, 6.3× as fast on x86-64 and 3.3× as fast on arm64, as the geometric mean of 111 operations on one thread (5.6× and 2.7× with Pillow's exact arithmetic). That is 3.0× as fast as Pillow-SIMD, and faster than OpenCV in 77 of the 104 operations both have on x86-64, 69 on arm64.
A drop-in replacement for Pillow 13.0.0: it installs
the same PIL package, with the same API, built with SIMD kernels for
x86-64 (SSE4.1, AVX2, AVX-VNNI) and arm64 (NEON). Your code doesn't change.
python3 -m pip uninstall -y pillow pillow-simd
python3 -m pip install pillow-allsimd
It is a fork of Pillow-SIMD, which brought SIMD to Pillow on x86:
| Pillow-AllSIMD | Pillow-SIMD 12.1.1 | |
|---|---|---|
| Based on | Pillow 13.0.0 | Pillow 12.1.1 |
| x86-64 | SSE4.1, AVX2 and AVX-VNNI kernels, the best set chosen at import | SSE4 or AVX2, chosen when it is built |
| arm64 | NEON kernels (Linux, macOS) | does not build (-msse4) |
| Other CPUs | portable C (riscv64, ppc64le, s390x, armv7) | does not build |
| Wheels on PyPI | Linux x86-64 and arm64, macOS arm64; CPython 3.11 to 3.15 and free-threaded | none: compiled when installed |
How the speed was found, and what didn't work: Six times Pillow: notes from Pillow-AllSIMD.
For Pillow itself, please refer to its documentation, changelog and contribution guide.
simd/pillow-13 branch).checks/simd_hashes.py). The portable build also passes the
suite on riscv64, ppc64le, s390x, armv7 and 32-bit x86, under QEMU
(OTHER_ARCHITECTURES.md).Pillow-AllSIMD stands on the work of others, and keeps their copyright notices (LICENSE):
Pillow-AllSIMD's own changes are by Matteo Ferrabone and contributors. To cite it, see CITATION.cff, which also cites Pillow and Pillow-SIMD.
(From Pillow-SIMD's readme, like the "why" sections further down.)
There are multiple ways to tweak image processing performance. To name a few, such ways can be: utilizing better algorithms, optimizing existing implementations, using more processing power and/or resources. One of the great examples of using a more efficient algorithm is replacing a convolution-based Gaussian blur with a sequential-box one.
Such examples are rather rare, though. It is also known, that certain processes might be optimized by using parallel processing to run the respective routines. But a more practical key to optimizations might be making things work faster using the resources at hand. For instance, SIMD computing might be the case.
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗