Add speedups.rst

This commit is contained in:
Dan 2022-04-24 11:56:07 +02:00
parent d48cef9a26
commit 39694a2949
4 changed files with 67 additions and 31 deletions

View File

@ -143,7 +143,7 @@ Meta
topics/client-settings topics/client-settings
topics/synchronous topics/synchronous
topics/text-formatting topics/text-formatting
topics/tgcrypto topics/speedups
topics/smart-plugins topics/smart-plugins
topics/storage-engines topics/storage-engines
topics/serializing topics/serializing

View File

@ -0,0 +1,65 @@
Speedups
========
Pyrogram's speed can be boosted up by using TgCrypto and uvloop.
.. contents:: Contents
:backlinks: none
:depth: 1
:local:
-----
TgCrypto
--------
TgCrypto_ is a high-performance, easy-to-install cryptography library specifically written in C for Pyrogram as a Python
extension. It is a replacement for a slower Python-only alternative and implements the cryptographic algorithms Telegram
requires, namely: AES-256-IGE, AES-256-CTR and AES-256-CBC.
Installation
^^^^^^^^^^^^
.. code-block:: bash
$ pip3 install -U tgcrypto
Usage
^^^^^
Pyrogram will automatically make use of TgCrypto when detected, all you need to do is to install it.
uvloop
------
uvloop_ is a fast, drop-in replacement of the built-in asyncio event loop. uvloop is implemented in Cython and uses
libuv under the hood. It makes asyncio 2-4x faster.
Installation
^^^^^^^^^^^^
.. code-block:: bash
$ pip3 install -U uvloop
Usage
^^^^^
Call ``uvloop.install()`` before calling ``asyncio.run()`` or ``app.run()``
.. code-block:: python
import asyncio
import uvloop
async def main():
app = Client("my_account")
async with app:
print(await app.get_me())
uvloop.install()
asyncio.run(main())
.. _TgCrypto: https://github.com/pyrogram/tgcrypto
.. _uvloop: https://github.com/MagicStack/uvloop

View File

@ -1,29 +0,0 @@
Fast Crypto
===========
Pyrogram's speed can be boosted up by TgCrypto_, a high-performance, easy-to-install cryptography library specifically
written in C for Pyrogram as a Python extension.
TgCrypto is a replacement for a slower Python-only alternative and implements the cryptographic algorithms Telegram
requires, namely: AES-256-IGE, AES-256-CTR and AES-256-CBC.
Installation
------------
.. code-block:: bash
$ pip3 install -U tgcrypto
.. note:: When TgCrypto is not detected in your system, Pyrogram will automatically fall back to a slower Python-only
implementation and will show you a warning.
The reason about being an optional package is that TgCrypto requires extra system tools in order to be compiled.
The errors you receive when trying to install TgCrypto are system dependent, but also descriptive enough to understand
what you should do next:
- **Windows**: Install `Visual C++ 2015 Build Tools <https://www.microsoft.com/en-us/download/details.aspx?id=48159>`_.
- **macOS**: A pop-up will automatically ask you to install the command line developer tools.
- **Linux**: Install a proper C compiler (``gcc``, ``clang``) and the Python header files (``python3-dev``).
- **Termux**: Install ``clang`` package.
.. _TgCrypto: https://github.com/pyrogram/tgcrypto

View File

@ -54,7 +54,7 @@ except ImportError:
log.warning( log.warning(
"TgCrypto is missing! " "TgCrypto is missing! "
"Pyrogram will work the same, but at a much slower speed. " "Pyrogram will work the same, but at a much slower speed. "
"More info: https://docs.pyrogram.org/topics/tgcrypto" "More info: https://docs.pyrogram.org/topics/speedups"
) )