All Projects → JuliaFolds → Transducers.jl

JuliaFolds / Transducers.jl

Licence: mit
Efficient transducers for Julia

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to Transducers.jl

Floops.jl
Fast sequential, threaded, and distributed for-loops for Julia—fold for humans™
Stars: ✭ 96 (-57.52%)
Mutual labels:  parallel, distributed-computing, high-performance
data-parallelism
juliafolds.github.io/data-parallelism/
Stars: ✭ 22 (-90.27%)
Mutual labels:  high-performance, parallel, distributed-computing
future.batchtools
🚀 R package future.batchtools: A Future API for Parallel and Distributed Processing using batchtools
Stars: ✭ 77 (-65.93%)
Mutual labels:  parallel, distributed-computing
Corium
Corium is a modern scripting language which combines simple, safe and efficient programming.
Stars: ✭ 18 (-92.04%)
Mutual labels:  high-performance, parallel
Easylambda
distributed dataflows with functional list operations for data processing with C++14
Stars: ✭ 475 (+110.18%)
Mutual labels:  parallel, distributed-computing
FoldsCUDA.jl
Data-parallelism on CUDA using Transducers.jl and for loops (FLoops.jl)
Stars: ✭ 48 (-78.76%)
Mutual labels:  high-performance, parallel
hatrack
Fast, multi-reader, multi-writer, lockless data structures for parallel programming
Stars: ✭ 55 (-75.66%)
Mutual labels:  high-performance, parallel
MultiHttp
This is a high performance , very useful multi-curl tool written in php. 一个超级好用的并发CURL工具!!!(httpful,restful, concurrency)
Stars: ✭ 79 (-65.04%)
Mutual labels:  high-performance, parallel
zmq
ZeroMQ based distributed patterns
Stars: ✭ 27 (-88.05%)
Mutual labels:  parallel, distributed-computing
Lizardfs
LizardFS is an Open Source Distributed File System licensed under GPLv3.
Stars: ✭ 793 (+250.88%)
Mutual labels:  distributed-computing, high-performance
Pwrake
Parallel Workflow extension for Rake, runs on multicores, clusters, clouds.
Stars: ✭ 57 (-74.78%)
Mutual labels:  parallel, distributed-computing
ParallelUtilities.jl
Fast and easy parallel mapreduce on HPC clusters
Stars: ✭ 28 (-87.61%)
Mutual labels:  parallel, distributed-computing
Threadsx.jl
Parallelized Base functions
Stars: ✭ 126 (-44.25%)
Mutual labels:  parallel, high-performance
Smartsql
SmartSql = MyBatis in C# + .NET Core+ Cache(Memory | Redis) + R/W Splitting + PropertyChangedTrack +Dynamic Repository + InvokeSync + Diagnostics
Stars: ✭ 775 (+242.92%)
Mutual labels:  distributed-computing, high-performance
Highs
Linear optimization software
Stars: ✭ 107 (-52.65%)
Mutual labels:  parallel, high-performance
Future.apply
🚀 R package: future.apply - Apply Function to Elements in Parallel using Futures
Stars: ✭ 159 (-29.65%)
Mutual labels:  parallel, distributed-computing
Cms
GleezCMS - A Light, Simple, Flexible Content Management System
Stars: ✭ 200 (-11.5%)
Mutual labels:  high-performance
Bedops
🔬 BEDOPS: high-performance genomic feature operations
Stars: ✭ 215 (-4.87%)
Mutual labels:  parallel
Webgl Plot
A high-Performance real-time 2D plotting library based on native WebGL
Stars: ✭ 200 (-11.5%)
Mutual labels:  high-performance
Ordinarydiffeq.jl
High performance differential equation solvers for ordinary differential equations, including neural ordinary differential equations (neural ODEs) and scientific machine learning (SciML)
Stars: ✭ 195 (-13.72%)
Mutual labels:  high-performance

Transducers.jl: Efficient transducers for Julia

Stable documentation Latest documentation Travis Status codecov.io Coverage Status Aqua QA

Transducers.jl provides composable algorithms on "sequence" of inputs. They are called transducers, first introduced in Clojure language by Rich Hickey.

Using transducers is quite straightforward, especially if you already know similar concepts in iterator libraries:

using Transducers
1:40 |> Partition(7) |> Filter(x -> prod(x) % 11 == 0) |> Cat() |> Scan(+) |> sum

However, the protocol used for the transducers is quite different from iterators and results in a better performance for complex compositions. Furthermore, some transducers support parallel execution. If a transducer is composed of such transducers, it can be automatically re-used both in sequential (foldl etc.) and parallel (reduce etc.) contexts.

See more in the documentation.

Installation

using Pkg
Pkg.add("Transducers")

Related packages

  • ThreadsX.jl implements Base-like API based on Transducers.jl. It is highly recommended for using threaded computation without fully switching to transducers.
  • LazyGroupBy.jl wraps Transducers.Groupby in an easy-to-use syntax.
  • DataTools.jl is a set of tools for data analysis built on top of Transducers.jl.
  • BangBang.jl implements mutate-or-widen API. This is the foundation of typocalypse-free map/collect-like functions. Functions such as append!!, merge!!, mergewith!!, union!!, etc. are useful as a reducing function.
  • InitialValues.jl provides a framework for initial/identity element of folds.
  • MicroCollections.jl provides empty and singleton collections (arrays, dicts and sets). They are useful when writing transducers and reducing functions that construct a data collection.
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].