FastRSS

Parse RSS feeds very quickly

Installation

This package is available on hex.

It can be installed by adding fast_rss to your list of dependencies in mix.exs:

def deps do
[
{:fast_rss, "~> 0.1.4"}
]
end

You also need the rust compiler installed: https://www.rust-lang.org/tools/install

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Usage

There is only one function it takes an RSS string and outputs an {:ok, map()}

iex(1)> FastRSS.parse("...rss_feed_string...")
iex(2)> {:ok, map_of_rss}

The docs can be found at https://hexdocs.pm/fast_rss.

Benchmark

HTML: https://avencera.github.io/fast_rss/

Benchmark run from 2020-02-21 18:07:35.376657Z UTC

System

Benchmark suite executing on the following system:

Operating System macOS
CPU Information Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
Number of Available Cores 16
Available Memory 32 GB
Elixir Version 1.10.1
Erlang Version 22.2.6

Configuration

Benchmark suite executing with the following configuration:

:time 30 s
:parallel 1
:warmup 5 s

Statistics

Input: anxiety

Run Time

Name IPS Average Devitation Median 99th %
fast_rss 81.22 12.31 ms ±2.67% 12.27 ms 13.58 ms
feeder_ex 3.68 271.51 ms ±5.44% 266.17 ms 313.98 ms
feed_raptor 3.05 328.25 ms ±0.89% 328.01 ms 347.03 ms
elixir_feed_parser 1.97 506.87 ms ±2.33% 506.76 ms 524.07 ms
Comparison
Name IPS Slower
fast_rss 81.22  
feeder_ex 3.68 22.05x
feed_raptor 3.05 26.66x
elixir_feed_parser 1.97 41.17x
Memory Usage
Name Memory Factor
fast_rss 0.65 MB  
feeder_ex 17.21 MB 26.62x
feed_raptor 268.54 MB 415.36x
elixir_feed_parser 313.30 MB 484.6x

Input: ben

Run Time

Name IPS Average Devitation Median 99th %
fast_rss 52.83 18.93 ms ±2.43% 18.94 ms 19.68 ms
feeder_ex 13.24 75.55 ms ±3.19% 75.19 ms 83.40 ms
elixir_feed_parser 3.61 276.65 ms ±3.84% 275.63 ms 322.99 ms
feed_raptor 0.48 2080.14 ms ±0.57% 2075.11 ms 2112.08 ms
Comparison
Name IPS Slower
fast_rss 52.83  
feeder_ex 13.24 3.99x
elixir_feed_parser 3.61 14.62x
feed_raptor 0.48 109.89x
Memory Usage
Name Memory Factor
fast_rss 1.35 MB  
feeder_ex 27.86 MB 20.7x
elixir_feed_parser 163.88 MB 121.76x
feed_raptor 1577.40 MB 1172.03x

Input: daily

Run Time

Name IPS Average Devitation Median 99th %
fast_rss 14.28 0.0700 s ±2.59% 0.0695 s 0.0776 s
feeder_ex 5.02 0.199 s ±1.52% 0.198 s 0.21 s
elixir_feed_parser 0.65 1.55 s ±1.25% 1.55 s 1.59 s
feed_raptor 0.126 7.91 s ±0.28% 7.92 s 7.92 s
Comparison
Name IPS Slower
fast_rss 14.28  
feeder_ex 5.02 2.85x
elixir_feed_parser 0.65 22.1x
feed_raptor 0.126 112.97x
Memory Usage
Name Memory Factor
fast_rss 3.30 MB  
feeder_ex 109.73 MB 33.24x
elixir_feed_parser 880.51 MB 266.72x
feed_raptor 6386.15 MB 1934.48x

Input: dave

Run Time

Name IPS Average Devitation Median 99th %
fast_rss 155.84 6.42 ms ±2.37% 6.40 ms 6.98 ms
feeder_ex 55.88 17.90 ms ±5.45% 17.50 ms 20.48 ms
elixir_feed_parser 9.10 109.93 ms ±3.71% 109.59 ms 123.09 ms
feed_raptor 1.58 631.99 ms ±1.44% 632.06 ms 652.61 ms
Comparison
Name IPS Slower
fast_rss 155.84  
feeder_ex 55.88 2.79x
elixir_feed_parser 9.10 17.13x
feed_raptor 1.58 98.49x
Memory Usage
Name Memory Factor
fast_rss 0.38 MB  
feeder_ex 9.25 MB 24.56x
elixir_feed_parser 80.42 MB 213.48x
feed_raptor 571.18 MB 1516.17x

Input: sleepy

Run Time

Name IPS Average Devitation Median 99th %
fast_rss 368.53 2.71 ms ±2.71% 2.71 ms 2.90 ms
feeder_ex 124.50 8.03 ms ±6.82% 7.95 ms 9.84 ms
elixir_feed_parser 26.79 37.33 ms ±3.84% 37.19 ms 41.86 ms
feed_raptor 3.20 312.83 ms ±3.22% 310.43 ms 353.46 ms
Comparison
Name IPS Slower
fast_rss 368.53  
feeder_ex 124.50 2.96x
elixir_feed_parser 26.79 13.76x
feed_raptor 3.20 115.29x
Memory Usage
Name Memory Factor
fast_rss 0.131 MB  
feeder_ex 4.28 MB 32.59x
elixir_feed_parser 35.88 MB 272.92x
feed_raptor 274.98 MB 2091.61x

Input: stuff

Run Time

Name IPS Average Devitation Median 99th %
fast_rss 10.10 0.0990 s ±1.57% 0.0988 s 0.106 s
feeder_ex 0.95 1.05 s ±1.31% 1.05 s 1.08 s
elixir_feed_parser 0.54 1.86 s ±1.43% 1.86 s 1.90 s
feed_raptor 0.0794 12.59 s ±1.63% 12.54 s 12.82 s
Comparison
Name IPS Slower
fast_rss 10.10  
feeder_ex 0.95 10.58x
elixir_feed_parser 0.54 18.79x
feed_raptor 0.0794 127.21x
Memory Usage
Name Memory Factor
fast_rss 5.52 MB  
feeder_ex 140.58 MB 25.48x
elixir_feed_parser 1018.78 MB 184.61x
feed_raptor 8425.39 MB 1526.77x