All Projects → travisbrown → Iteratee

travisbrown / Iteratee

Licence: other
Iteratees for cats

Programming Languages

scala
5932 projects

Projects that are alternatives of or similar to Iteratee

Logstash
Logstash - transport and process your logs, events, or other data
Stars: ✭ 12,543 (+6643.55%)
Mutual labels:  streaming
Shims
Seamless interop layer between cats and scalaz
Stars: ✭ 174 (-6.45%)
Mutual labels:  cats
Nine Cards V2
An Open Source Android Launcher built with Scala on Android
Stars: ✭ 181 (-2.69%)
Mutual labels:  cats
Pulsar4s
Idiomatic, typesafe, and reactive Scala client for Apache Pulsar
Stars: ✭ 172 (-7.53%)
Mutual labels:  cats
Liftbridge
Lightweight, fault-tolerant message streams.
Stars: ✭ 2,175 (+1069.35%)
Mutual labels:  streaming
Catdcgan
A DCGAN that generate Cat pictures 🐱‍💻
Stars: ✭ 177 (-4.84%)
Mutual labels:  cats
Http4s
A minimal, idiomatic Scala interface for HTTP
Stars: ✭ 2,173 (+1068.28%)
Mutual labels:  cats
Fs2 Kafka
Functional Kafka Streams for Scala
Stars: ✭ 183 (-1.61%)
Mutual labels:  streaming
Hammock
Purely functional HTTP client
Stars: ✭ 174 (-6.45%)
Mutual labels:  cats
Render Media
Intelligently render media files in the browser
Stars: ✭ 181 (-2.69%)
Mutual labels:  streaming
Tus Ruby Server
Ruby server for tus resumable upload protocol
Stars: ✭ 172 (-7.53%)
Mutual labels:  streaming
Glob Stream
A Readable Stream interface over node-glob.
Stars: ✭ 172 (-7.53%)
Mutual labels:  streaming
Node Csv Stringify
CSV stringifier implementing the Node.js `stream.Transform` API
Stars: ✭ 179 (-3.76%)
Mutual labels:  streaming
Koel
🐦 A personal music streaming server that works.
Stars: ✭ 13,105 (+6945.7%)
Mutual labels:  streaming
Scio
A Scala API for Apache Beam and Google Cloud Dataflow.
Stars: ✭ 2,247 (+1108.06%)
Mutual labels:  streaming
Onyx
Distributed, masterless, high performance, fault tolerant data processing
Stars: ✭ 2,019 (+985.48%)
Mutual labels:  streaming
Haishinkit.swift
Camera and Microphone streaming library via RTMP, HLS for iOS, macOS, tvOS.
Stars: ✭ 2,237 (+1102.69%)
Mutual labels:  streaming
Xlsxtream
Streaming & Fast XLSX Spreadsheet Writer for Ruby
Stars: ✭ 184 (-1.08%)
Mutual labels:  streaming
Fast
A framework for GPU based high-performance medical image processing and visualization
Stars: ✭ 179 (-3.76%)
Mutual labels:  streaming
Hstream
The streaming database built for IoT data storage and real-time processing in the 5G Era
Stars: ✭ 166 (-10.75%)
Mutual labels:  streaming

iteratee.io

Build status Coverage status Gitter Maven Central

This project is an iteratee implementation for Cats that began as a port of Scalaz's iteratee package, although the API and implementation are now very different from Scalaz's. There are API docs (but they're a work in progress), and I've published a blog post introducing the project.

The motivations for the port are similar to those for circe—in particular I'm aiming for a more consistent API, better performance, and better documentation.

Note that this library doesn't support many of the use cases that fs2 (formerly Scalaz Stream) is designed to handle. It doesn't support nondeterministic reading from multiple streams, for example, and in general is a less appropriate choice for situations where concurrency and parallelism are primary goals. Where the use cases of fs2 and this library do overlap, however, it's often likely to be a simpler, faster solution.

The initial performance benchmarks look promising. For example, here are the throughput results for summing a sequence of numbers with this library and cats.Id (II), this library and Monix's Task (IM), this library and Scalaz's Task (IT), this library and Twitter futures (IR), Scalaz Stream (S), scalaz-iteratee (Z), play-iteratee (P), the Scala collections library (C), and fs2 (F). Higher numbers are better.

Benchmark                      Mode  Cnt      Score     Error  Units
InMemoryBenchmark.sumInts0II  thrpt   80  10225.388 ± 191.612  ops/s
InMemoryBenchmark.sumInts1IM  thrpt   80  13395.800 ±  30.912  ops/s
InMemoryBenchmark.sumInts2IT  thrpt   80  18609.579 ±  47.491  ops/s
InMemoryBenchmark.sumInts3IR  thrpt   80  15999.740 ± 114.949  ops/s
InMemoryBenchmark.sumInts4S   thrpt   80     72.074 ±   1.209  ops/s
InMemoryBenchmark.sumInts5Z   thrpt   80    310.472 ±   4.368  ops/s
InMemoryBenchmark.sumInts6P   thrpt   80     43.071 ±   0.543  ops/s
InMemoryBenchmark.sumInts7C   thrpt   80  12975.042 ±  48.702  ops/s
InMemoryBenchmark.sumInts8F   thrpt   80   9610.699 ±  41.936  ops/s

And the results for collecting the first 10,000 values from an infinite stream of non-negative numbers into a Vector:

Benchmark                         Mode  Cnt     Score    Error  Units
StreamingBenchmark.takeLongs0II  thrpt   80  2787.725 ± 16.812  ops/s
StreamingBenchmark.takeLongs1IM  thrpt   80  1617.848 ± 19.899  ops/s
StreamingBenchmark.takeLongs2IT  thrpt   80  1052.494 ±  7.707  ops/s
StreamingBenchmark.takeLongs3IR  thrpt   80   979.514 ± 26.197  ops/s
StreamingBenchmark.takeLongs4S   thrpt   80    56.882 ±  0.969  ops/s
StreamingBenchmark.takeLongs5Z   thrpt   80   154.103 ± 10.350  ops/s
StreamingBenchmark.takeLongs6P   thrpt   80     1.216 ±  0.005  ops/s
StreamingBenchmark.takeLongs7C   thrpt   80  3273.158 ± 55.187  ops/s
StreamingBenchmark.takeLongs8F   thrpt   80     7.915 ±  0.044  ops/s

And allocation rates (lower is better):

Benchmark                                            Mode  Cnt           Score          Error  Units
InMemoryBenchmark.sumInts0II:gc.alloc.rate.norm     thrpt   20      159953.462 ±       11.863   B/op
InMemoryBenchmark.sumInts1IM:gc.alloc.rate.norm     thrpt   20      160203.272 ±        5.949   B/op
InMemoryBenchmark.sumInts2IT:gc.alloc.rate.norm     thrpt   20      160622.026 ±        6.323   B/op
InMemoryBenchmark.sumInts3IR:gc.alloc.rate.norm     thrpt   20      160398.303 ±        6.685   B/op
InMemoryBenchmark.sumInts4S:gc.alloc.rate.norm      thrpt   20    63936897.241 ±   320928.043   B/op
InMemoryBenchmark.sumInts5Z:gc.alloc.rate.norm      thrpt   20    16401510.998 ±        6.115   B/op
InMemoryBenchmark.sumInts6P:gc.alloc.rate.norm      thrpt   20    13802446.593 ±   229152.745   B/op
InMemoryBenchmark.sumInts7C:gc.alloc.rate.norm      thrpt   20      159851.547 ±       14.556   B/op
InMemoryBenchmark.sumInts8F:gc.alloc.rate.norm      thrpt   20      260454.260 ±     1522.736   B/op

Benchmark                                            Mode  Cnt           Score          Error  Units
StreamingBenchmark.takeLongs0II:gc.alloc.rate.norm  thrpt   20     3043720.338 ±        0.018   B/op
StreamingBenchmark.takeLongs1IM:gc.alloc.rate.norm  thrpt   20     3444961.639 ±        4.168   B/op
StreamingBenchmark.takeLongs2IT:gc.alloc.rate.norm  thrpt   20     5804308.795 ±    61718.228   B/op
StreamingBenchmark.takeLongs3IR:gc.alloc.rate.norm  thrpt   20     5124124.296 ±        5.147   B/op
StreamingBenchmark.takeLongs4S:gc.alloc.rate.norm   thrpt   20    75347149.315 ±   555268.150   B/op
StreamingBenchmark.takeLongs5Z:gc.alloc.rate.norm   thrpt   20    28588033.048 ±   238419.245   B/op
StreamingBenchmark.takeLongs6P:gc.alloc.rate.norm   thrpt   20  1206196498.000 ±    71329.621   B/op
StreamingBenchmark.takeLongs7C:gc.alloc.rate.norm   thrpt   20      526752.310 ±        0.029   B/op
StreamingBenchmark.takeLongs8F:gc.alloc.rate.norm   thrpt   20   531380973.839 ± 13505581.754   B/op

License

iteratee.io is licensed under the Apache License, Version 2.0 (the "License"); you may not use this software except in compliance with the License.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].