26

GitHub - meituan/EasyReact: Are you confused by the functors, applicatives, and...

 5 years ago
source link: https://github.com/meituan/EasyReact
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

README.md

EasyReact

Build Status Version License Platform codecov

Read this in other languages: 简体中文

What is EasyReact

EasyReact is an easy-to-use reactive programming framework.

Why use EasyReact

Are you confused by the functors, applicatives, and monads in RxSwift and ReactiveCocoa? It doesn't matter, the concepts are so complicated that not many developers actually use them in normal projects. Is there an easy-to-use way to use reactive programming? EasyReact is born for this reason.

Features

Note: The "Node" listed below refer to EZRNode, a unified representation of various values (all object types) in EasyReact.

Learn more

  1. Framework Overview

  2. Basic Operations

  3. Memory Management

  4. How to Contribute

Compare other Functional Reactive libraries (e.g. ReactiveCocoa or ReactiveX)

Project EasyReact ReactiveCocoa ReactiveX Core idea Graph theory and object-oriented programming Functional programming Functional programming and generic programming Propagation variability ✅ ❌ ❌ Basic transformation ✅ ✅ ✅ Combination transformation ✅ ✅ ✅ High-order transformation ✅ ✅ ✅ Traversal node/signal ✅ ❌ ❌ Multi-language support Objective-C
(Other language versions will open source in the future) Objective-C, Swift Many language versions Performance faster slow fastest Chinese document support ✅ ❌ ❌ Debugging tools Topology display
More rich dynamic debugging tools(Coming soon) Instrument ❌

System Requirements

  • iOS 8.0 +
  • Xcode 8.0 +

How to run the example project

git clone this repo,excute pod install in Example/, then open EasyReact.xcworkspace.

Installation

CocoaPods

Add the following content in Podfile

pod 'EasyReact'

Then execute pod install

How to use (For a more detailed example, please see the test specs in the example project Tests/)

Unit Test

EasyReact contains a complete unit test with the relevant code in the Example/Tests folder. You can open the sample project and execute the Test command to run these unit tests.

Time-consuming Benchmarking with EasyReact, ReactiveCocoa, RxSwift Common APIs

Environment

Build Platform: macOS High Sierra 10.13.5

IDE: Xcode 9.4.1

Device: iPhone X 256G iOS 11.4(15F79)

Cases

  1. Single stage operations, such as listener, map, filter, flattenMap, etc.
  2. Multicast operations, such as combine, zip, merge, etc.
  3. syncWith operations

The scale of the test is based on 10 operating objects and 1000 triggers. For example, the listener method has 10 listeners and repeats the action of sending the value 1000 times. The unit of time is ns.

Result data

Repeat the above experiment 10 times to get the data as follows:

name listener map filter flattenMap combine zip merge syncWith EasyReact 1860665 30285707 7043007 7259761 6234540 63384482 19794457 12359669 ReactiveCocoa 4054261 74416369 45095903 44675757 209096028 143311669 13898969 53619799 RAC:EasyReact 217.89% 245.71% 640.29% 615.39% 3353.83% 226.10% 70.22% 433.83%

benchmark

Summary

ReactiveCocoa's average time consuming is 725.41% times more than EasyReact.

EasyReact will compare benchmark with RxSwift when the Swift version open source recently.

Authors

William Zang, [email protected]
姜沂, [email protected]
Qin Hong, [email protected]
SketchK, [email protected]
zesming, [email protected]
Zhiyu Wong, [email protected]
johnnywjy, [email protected]
qiezishu, [email protected]

License

EasyReact is Apache Public License 2.0


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK