amarao (amarao_san) wrote,
amarao
amarao_san

Хаха!

http://code.google.com/p/lstorrent/source/browse/#svn/trunk%3Fstate%3Dclosed



Торрентчисло файлов в торрентеразмер торрент-файлановый бинарникlstorrent.py
example.torrent1000000
49 Mb

real 0m1.088s
user 0m0.936s
sys 0m0.148s
mem peak: 236Mb


real 0m21.122s
user 0m21.269s
sys 0m0.548s
mem peak: 660Mb

Everything.torrent
10112
2.4Mb

real 0m0.026s
user 0m0.016s
sys 0m0.008s

real 0m0.267s
user 0m0.252s
sys 0m0.012s
World of Spectrum 16 DVD - FULL PACK.torrent
302561
33Mb

real 0m0.611s
user 0m0.492s
sys 0m0.112s

real 0m7.266s
user 0m7.072s
sys 0m0.180s
TOSEC Unpack.torrent
55464
7.7Mb

real 0m0.088s
user 0m0.072s
sys 0m0.016s

real 0m0.921s
user 0m0.888s
sys 0m0.032s


Итого: трёхкратная экономия по памяти, 10-20-кратная экономия по скорости. (тесты на AMD64 машине, на I386 должно быть сильно меньше).

Собственно, что было сделано: был сделан дурацкий хак: вместо того, чтобы КОПИРОВАТЬ строки из буффера, буффер правится таким образом, чтобы строка превратилась в asciiz. (для этого приходится извращаться с сохранением заменяемого символа во временной переменной, но место для символа всегда есть, т.к. любой тип данных начинается с идентификатора).

В принципе, следующий путь экономии (мне он не нравится) это либо совмещение обработки и парсинга (мне не нравится), либо совмещение их с чтением файла (что даст замедление, ибо читать 40Мб по байту, даже с внутренним а-ля mpeg кешированием, зло).

Итак, осталось написать парсер getopt_long, собственно, анализ этих параметров при выводе, и можно начинать изучать "как же всё-таки делаются пакеты для дебиана".

Собственно, ради чего делается?
./test /srv/anime/torrents-archive/* |wc -l
142

real	0m0.006s
user	0m0.000s
sys	0m0.004s

ls /srv/anime/torrents-archive/*|wc -l
71

(UPD: обновил, потому что тестил с дебаг-версией. В -O3 - ещё примерно +10% скорости)
Tags: lstorrent
Subscribe

  • systemd-networkd, netlink и arp флуд

    Нереально странный баг пофикшен с помощью eBPF затычки. Для меня большой неожиданностью является реакция на него.…

  • Rust soundness

    Каждый раз, когда я сталкиваюсь с маленькими "но" в Rust'е, это ощущение тщательной продуманности. Например, простейшие fold-функции для итераторов:…

  • still_ntp

    В ходе локального мозгового штурма у меня родилась суперидея. Надо написать ntp сервер, который может отдавать указанную дату. Т.е. сказали при…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 13 comments

  • systemd-networkd, netlink и arp флуд

    Нереально странный баг пофикшен с помощью eBPF затычки. Для меня большой неожиданностью является реакция на него.…

  • Rust soundness

    Каждый раз, когда я сталкиваюсь с маленькими "но" в Rust'е, это ощущение тщательной продуманности. Например, простейшие fold-функции для итераторов:…

  • still_ntp

    В ходе локального мозгового штурма у меня родилась суперидея. Надо написать ntp сервер, который может отдавать указанную дату. Т.е. сказали при…