u-case 4.1.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.sh +39 -16
- data/.travis.yml +9 -6
- data/Gemfile +22 -10
- data/README.md +108 -106
- data/README.pt-BR.md +112 -112
- data/lib/micro/case.rb +52 -5
- data/lib/micro/case/config.rb +3 -3
- data/lib/micro/case/result.rb +25 -25
- data/lib/micro/case/result/wrapper.rb +20 -15
- data/lib/micro/case/utils.rb +20 -24
- data/lib/micro/case/version.rb +1 -1
- data/lib/micro/cases/flow.rb +6 -2
- data/lib/micro/cases/map.rb +2 -2
- data/u-case.gemspec +2 -2
- metadata +16 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a59c64287aa0ee26cc6b111f3d228dac413b5ea604216d20a5c039eece22f5c5
|
4
|
+
data.tar.gz: 70394e606e6c73a9c59c42dc3669434a2622e5d714923344576c339084ec31cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e8f15b3614af9ed23016b94010e341da7587beb90efd59eb5ae0c3528ebfa668a75f39c4b12e0dadd843e180a6e361719a8b99d547e356f5fa30f40c31994a68
|
7
|
+
data.tar.gz: 1528399ea74cd553526137f9a39f0a9dc18ab092fb0535dea33659e141ff6baf4ab1806b5963b1fe637e50d3f8157527a933444f2422ba5fc9f79b65f1f091cb
|
data/.travis.sh
CHANGED
@@ -1,23 +1,46 @@
|
|
1
1
|
#!/bin/bash
|
2
2
|
|
3
|
-
|
3
|
+
RUBY_V=$(ruby -v)
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
ACTIVEMODEL_VERSION='3.2' ENABLE_TRANSITIONS='true' bundle exec rake test
|
5
|
+
function run_with_bundler {
|
6
|
+
rm Gemfile.lock
|
8
7
|
|
9
|
-
if [
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
fi
|
8
|
+
if [ ! -z "$1" ]; then
|
9
|
+
bundle_cmd="bundle _$1_"
|
10
|
+
else
|
11
|
+
bundle_cmd="bundle"
|
12
|
+
fi
|
13
|
+
|
14
|
+
eval "$2 $bundle_cmd update"
|
15
|
+
eval "$2 ENABLE_TRANSITIONS=true $bundle_cmd exec rake test"
|
16
|
+
eval "$2 ENABLE_TRANSITIONS=false $bundle_cmd exec rake test"
|
17
|
+
}
|
18
|
+
|
19
|
+
function run_with_ar_version_and_bundler {
|
20
|
+
run_with_bundler "$2" "ACTIVERECORD_VERSION=$1"
|
21
|
+
}
|
22
|
+
|
23
|
+
RUBY_2_2345="ruby 2.[2345]."
|
14
24
|
|
15
|
-
if [[ $
|
16
|
-
|
17
|
-
|
18
|
-
|
25
|
+
if [[ $RUBY_V =~ $RUBY_2_2345 ]]; then
|
26
|
+
run_with_bundler "$BUNDLER_V1"
|
27
|
+
|
28
|
+
run_with_ar_version_and_bundler "3.2" "$BUNDLER_V1"
|
29
|
+
run_with_ar_version_and_bundler "4.0" "$BUNDLER_V1"
|
30
|
+
run_with_ar_version_and_bundler "4.1" "$BUNDLER_V1"
|
31
|
+
run_with_ar_version_and_bundler "4.2" "$BUNDLER_V1"
|
32
|
+
run_with_ar_version_and_bundler "5.0" "$BUNDLER_V1"
|
33
|
+
run_with_ar_version_and_bundler "5.1" "$BUNDLER_V1"
|
34
|
+
run_with_ar_version_and_bundler "5.2" "$BUNDLER_V1"
|
19
35
|
fi
|
20
36
|
|
21
|
-
|
22
|
-
|
23
|
-
|
37
|
+
RUBY_2_567="ruby 2.[567]."
|
38
|
+
RUBY_3_x_x="ruby 3.0."
|
39
|
+
|
40
|
+
if [[ $RUBY_V =~ $RUBY_2_567 ]] || [[ $RUBY_V =~ $RUBY_3_x_x ]]; then
|
41
|
+
gem install bundler -v ">= 2" --no-doc
|
42
|
+
|
43
|
+
run_with_bundler
|
44
|
+
run_with_ar_version_and_bundler "6.0"
|
45
|
+
run_with_ar_version_and_bundler "6.1"
|
46
|
+
fi
|
data/.travis.yml
CHANGED
@@ -1,21 +1,24 @@
|
|
1
|
-
|
2
1
|
language: ruby
|
3
2
|
|
4
|
-
|
3
|
+
cache:
|
4
|
+
bundler: true
|
5
|
+
directories:
|
6
|
+
- /home/travis/.rvm/
|
5
7
|
|
6
8
|
rvm:
|
7
|
-
- 2.2.
|
9
|
+
- 2.2.2
|
8
10
|
- 2.3.0
|
9
11
|
- 2.4.0
|
10
12
|
- 2.5.0
|
11
13
|
- 2.6.0
|
12
14
|
- 2.7.0
|
15
|
+
- 3.0.0
|
13
16
|
|
14
|
-
|
17
|
+
env:
|
18
|
+
- BUNDLER_V1="1.17.3"
|
15
19
|
|
16
20
|
before_install:
|
17
|
-
- gem
|
18
|
-
- gem install bundler -v '< 2'
|
21
|
+
- gem install bundler -v "$BUNDLER_V1"
|
19
22
|
|
20
23
|
install: bundle install --jobs=3 --retry=3
|
21
24
|
|
data/Gemfile
CHANGED
@@ -2,19 +2,20 @@ source "https://rubygems.org"
|
|
2
2
|
|
3
3
|
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
4
4
|
|
5
|
-
|
5
|
+
activerecord_version = ENV.fetch('ACTIVERECORD_VERSION', '7')
|
6
6
|
|
7
|
-
|
7
|
+
activerecord = case activerecord_version
|
8
8
|
when '3.2' then '3.2.22'
|
9
|
-
when '
|
10
|
-
when '
|
9
|
+
when '4.0' then '4.0.13'
|
10
|
+
when '4.1' then '4.1.16'
|
11
|
+
when '4.2' then '4.2.11'
|
12
|
+
when '5.0' then '5.0.7'
|
13
|
+
when '5.1' then '5.1.7'
|
14
|
+
when '5.2' then '5.2.4'
|
15
|
+
when '6.0' then '6.0.3.4'
|
16
|
+
when '6.1' then '6.1.2'
|
11
17
|
end
|
12
18
|
|
13
|
-
if activemodel_version < '6.1.0'
|
14
|
-
gem 'activemodel', activemodel, require: false
|
15
|
-
gem 'activesupport', activemodel, require: false
|
16
|
-
end
|
17
|
-
|
18
19
|
simplecov_version =
|
19
20
|
case RUBY_VERSION
|
20
21
|
when /\A2.[23]/ then '~> 0.17.1'
|
@@ -23,9 +24,20 @@ simplecov_version =
|
|
23
24
|
end
|
24
25
|
|
25
26
|
group :test do
|
26
|
-
gem 'minitest',
|
27
|
+
gem 'minitest', activerecord_version < '4.1' ? '~> 4.2' : '~> 5.0'
|
27
28
|
|
28
29
|
gem 'simplecov', simplecov_version, require: false
|
30
|
+
|
31
|
+
if activerecord
|
32
|
+
sqlite3 =
|
33
|
+
case activerecord
|
34
|
+
when /\A6\.(0|1)/, nil then '~> 1.4.0'
|
35
|
+
else '~> 1.3.0'
|
36
|
+
end
|
37
|
+
|
38
|
+
gem 'sqlite3', sqlite3
|
39
|
+
gem 'activerecord', activerecord, require: 'active_record'
|
40
|
+
end
|
29
41
|
end
|
30
42
|
|
31
43
|
pry_byebug_version =
|
data/README.md
CHANGED
@@ -39,12 +39,12 @@ The main project goals are:
|
|
39
39
|
Version | Documentation
|
40
40
|
--------- | -------------
|
41
41
|
unreleased| https://github.com/serradura/u-case/blob/main/README.md
|
42
|
-
4.
|
42
|
+
4.3.0 | https://github.com/serradura/u-case/blob/v4.x/README.md
|
43
43
|
3.1.0 | https://github.com/serradura/u-case/blob/v3.x/README.md
|
44
44
|
2.6.0 | https://github.com/serradura/u-case/blob/v2.x/README.md
|
45
45
|
1.1.0 | https://github.com/serradura/u-case/blob/v1.x/README.md
|
46
46
|
|
47
|
-
> **Note:** Você entende português?
|
47
|
+
> **Note:** Você entende português? 🇧🇷 🇵🇹 Verifique o [README traduzido em pt-BR](https://github.com/serradura/u-case/blob/main/README.pt-BR.md).
|
48
48
|
|
49
49
|
## Table of Contents <!-- omit in toc -->
|
50
50
|
- [Compatibility](#compatibility)
|
@@ -99,13 +99,13 @@ unreleased| https://github.com/serradura/u-case/blob/main/README.md
|
|
99
99
|
|
100
100
|
## Compatibility
|
101
101
|
|
102
|
-
| u-case | branch | ruby |
|
103
|
-
| -------------- | ------- | -------- | ------------- |
|
104
|
-
| unreleased | main | >= 2.2.0 | >= 3.2, <
|
105
|
-
| 4.
|
106
|
-
| 3.1.0 | v3.x | >= 2.2.0 | >= 3.2, < 6.1 |
|
107
|
-
| 2.6.0 | v2.x | >= 2.2.0 | >= 3.2, < 6.1 |
|
108
|
-
| 1.1.0 | v1.x | >= 2.2.0 | >= 3.2, < 6.1 |
|
102
|
+
| u-case | branch | ruby | activemodel | u-attributes |
|
103
|
+
| -------------- | ------- | -------- | ------------- | ------------- |
|
104
|
+
| unreleased | main | >= 2.2.0 | >= 3.2, < 7.0 | >= 2.7, < 3.0 |
|
105
|
+
| 4.3.0 | v4.x | >= 2.2.0 | >= 3.2, < 7.0 | >= 2.7, < 3.0 |
|
106
|
+
| 3.1.0 | v3.x | >= 2.2.0 | >= 3.2, < 6.1 | ~> 1.1 |
|
107
|
+
| 2.6.0 | v2.x | >= 2.2.0 | >= 3.2, < 6.1 | ~> 1.1 |
|
108
|
+
| 1.1.0 | v1.x | >= 2.2.0 | >= 3.2, < 6.1 | ~> 1.1 |
|
109
109
|
|
110
110
|
> Note: The activemodel is an optional dependency, this module [can be enabled](#u-casewith_activemodel_validation---how-to-validate-use-case-attributes) to validate the use cases' attributes.
|
111
111
|
|
@@ -115,7 +115,7 @@ unreleased| https://github.com/serradura/u-case/blob/main/README.md
|
|
115
115
|
|
116
116
|
A simple type system (at runtime) for Ruby.
|
117
117
|
|
118
|
-
It is used to validate some internal u-case's methods input. This gem also exposes an [`ActiveModel validator`](https://github.com/serradura/kind#kindvalidator-activemodelvalidations) when requiring the [`u-case/with_activemodel_validation`](#u-casewith_activemodel_validation---how-to-validate-use-case-attributes) module, or when the [`Micro::Case.config`](#microcaseconfig) was used to enable it.
|
118
|
+
It is used to validate some internal u-case's methods input. This gem also exposes an [`ActiveModel validator`](https://github.com/serradura/kind#kindvalidator-activemodelvalidations) when requiring the [`u-case/with_activemodel_validation`](#u-casewith_activemodel_validation---how-to-validate-use-case-attributes) module, or when the [`Micro::Case.config`](#microcaseconfig) was used to enable it.
|
119
119
|
2. [`u-attributes`](https://github.com/serradura/u-attributes) gem.
|
120
120
|
|
121
121
|
This gem allows defining read-only attributes, that is, your objects will have only getters to access their attributes data.
|
@@ -1052,8 +1052,8 @@ Divide
|
|
1052
1052
|
# Can't divide a number by 0
|
1053
1053
|
# Oh no, something went wrong!
|
1054
1054
|
|
1055
|
-
Divide
|
1056
|
-
.call(a: 2, b: '2')
|
1055
|
+
Divide
|
1056
|
+
.call(a: 2, b: '2')
|
1057
1057
|
.on_success { |result| puts result[:division] }
|
1058
1058
|
.on_exception(TypeError) { puts 'Please, use only numeric attributes.' }
|
1059
1059
|
.on_exception(ZeroDivisionError) { |_error| puts "Can't divide a number by 0." }
|
@@ -1200,42 +1200,44 @@ end
|
|
1200
1200
|
|
1201
1201
|
| Gem / Abstraction | Iterations per second | Comparison |
|
1202
1202
|
| ----------------- | --------------------: | ----------------: |
|
1203
|
-
| Dry::Monads |
|
1204
|
-
| **Micro::Case** |
|
1205
|
-
| Interactor |
|
1206
|
-
| Trailblazer::Operation |
|
1207
|
-
| Dry::Transaction |
|
1203
|
+
| Dry::Monads | 315635.1 | _**The Fastest**_ |
|
1204
|
+
| **Micro::Case** | 75837.7 | 4.16x slower |
|
1205
|
+
| Interactor | 59745.5 | 5.28x slower |
|
1206
|
+
| Trailblazer::Operation | 28423.9 | 11.10x slower |
|
1207
|
+
| Dry::Transaction | 10130.9 | 31.16x slower |
|
1208
1208
|
|
1209
1209
|
<details>
|
1210
1210
|
<summary>Show the full <a href="https://github.com/evanphx/benchmark-ips">benchmark/ips</a> results.</summary>
|
1211
1211
|
|
1212
1212
|
```ruby
|
1213
1213
|
# Warming up --------------------------------------
|
1214
|
-
# Interactor 5.
|
1215
|
-
# Trailblazer::Operation
|
1216
|
-
#
|
1217
|
-
#
|
1218
|
-
#
|
1219
|
-
#
|
1220
|
-
#
|
1214
|
+
# Interactor 5.711k i/100ms
|
1215
|
+
# Trailblazer::Operation
|
1216
|
+
# 2.283k i/100ms
|
1217
|
+
# Dry::Monads 31.130k i/100ms
|
1218
|
+
# Dry::Transaction 994.000 i/100ms
|
1219
|
+
# Micro::Case 7.911k i/100ms
|
1220
|
+
# Micro::Case::Safe 7.911k i/100ms
|
1221
|
+
# Micro::Case::Strict 6.248k i/100ms
|
1221
1222
|
|
1222
1223
|
# Calculating -------------------------------------
|
1223
|
-
# Interactor
|
1224
|
-
# Trailblazer::Operation
|
1225
|
-
#
|
1226
|
-
#
|
1227
|
-
#
|
1228
|
-
#
|
1229
|
-
#
|
1224
|
+
# Interactor 59.746k (±29.9%) i/s - 274.128k in 5.049901s
|
1225
|
+
# Trailblazer::Operation
|
1226
|
+
# 28.424k (±15.8%) i/s - 141.546k in 5.087882s
|
1227
|
+
# Dry::Monads 315.635k (± 6.1%) i/s - 1.588M in 5.048914s
|
1228
|
+
# Dry::Transaction 10.131k (± 6.4%) i/s - 50.694k in 5.025150s
|
1229
|
+
# Micro::Case 75.838k (± 9.7%) i/s - 379.728k in 5.052573s
|
1230
|
+
# Micro::Case::Safe 75.461k (±10.1%) i/s - 379.728k in 5.079238s
|
1231
|
+
# Micro::Case::Strict 64.235k (± 9.0%) i/s - 324.896k in 5.097028s
|
1230
1232
|
|
1231
1233
|
# Comparison:
|
1232
|
-
# Dry::Monads:
|
1233
|
-
# Micro::Case:
|
1234
|
-
# Micro::Case::Safe:
|
1235
|
-
# Micro::Case::Strict:
|
1236
|
-
# Interactor:
|
1237
|
-
# Trailblazer::Operation:
|
1238
|
-
# Dry::Transaction:
|
1234
|
+
# Dry::Monads: 315635.1 i/s
|
1235
|
+
# Micro::Case: 75837.7 i/s - 4.16x (± 0.00) slower
|
1236
|
+
# Micro::Case::Safe: 75461.3 i/s - 4.18x (± 0.00) slower
|
1237
|
+
# Micro::Case::Strict: 64234.9 i/s - 4.91x (± 0.00) slower
|
1238
|
+
# Interactor: 59745.5 i/s - 5.28x (± 0.00) slower
|
1239
|
+
# Trailblazer::Operation: 28423.9 i/s - 11.10x (± 0.00) slower
|
1240
|
+
# Dry::Transaction: 10130.9 i/s - 31.16x (± 0.00) slower
|
1239
1241
|
```
|
1240
1242
|
</details>
|
1241
1243
|
|
@@ -1245,42 +1247,42 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/suc
|
|
1245
1247
|
|
1246
1248
|
| Gem / Abstraction | Iterations per second | Comparison |
|
1247
1249
|
| ----------------- | --------------------: | ----------------: |
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
| Trailblazer::Operation |
|
1251
|
-
| Interactor |
|
1252
|
-
| Dry::Transaction |
|
1250
|
+
| Dry::Monads | 135386.9 | _**The Fastest**_ |
|
1251
|
+
| **Micro::Case** | 73489.3 | 1.85x slower |
|
1252
|
+
| Trailblazer::Operation | 29016.4 | 4.67x slower |
|
1253
|
+
| Interactor | 27037.0 | 5.01x slower |
|
1254
|
+
| Dry::Transaction | 8988.6 | 15.06x slower |
|
1253
1255
|
|
1254
1256
|
<details>
|
1255
1257
|
<summary>Show the full <a href="https://github.com/evanphx/benchmark-ips">benchmark/ips</a> results.</summary>
|
1256
1258
|
|
1257
1259
|
```ruby
|
1258
1260
|
# Warming up --------------------------------------
|
1259
|
-
# Interactor 2.
|
1260
|
-
# Trailblazer::Operation
|
1261
|
-
# Dry::Monads 13.
|
1262
|
-
# Dry::Transaction
|
1263
|
-
# Micro::Case
|
1264
|
-
# Micro::Case::Safe
|
1265
|
-
# Micro::Case::Strict
|
1261
|
+
# Interactor 2.626k i/100ms
|
1262
|
+
# Trailblazer::Operation 2.343k i/100ms
|
1263
|
+
# Dry::Monads 13.386k i/100ms
|
1264
|
+
# Dry::Transaction 868.000 i/100ms
|
1265
|
+
# Micro::Case 7.603k i/100ms
|
1266
|
+
# Micro::Case::Safe 7.598k i/100ms
|
1267
|
+
# Micro::Case::Strict 6.178k i/100ms
|
1266
1268
|
|
1267
1269
|
# Calculating -------------------------------------
|
1268
|
-
# Interactor
|
1269
|
-
# Trailblazer::Operation
|
1270
|
-
# Dry::Monads
|
1271
|
-
# Dry::Transaction
|
1272
|
-
# Micro::Case
|
1273
|
-
# Micro::Case::Safe
|
1274
|
-
# Micro::Case::Strict
|
1270
|
+
# Interactor 27.037k (±24.9%) i/s - 128.674k in 5.102133s
|
1271
|
+
# Trailblazer::Operation 29.016k (±12.4%) i/s - 145.266k in 5.074991s
|
1272
|
+
# Dry::Monads 135.387k (±15.1%) i/s - 669.300k in 5.055356s
|
1273
|
+
# Dry::Transaction 8.989k (± 9.2%) i/s - 45.136k in 5.084820s
|
1274
|
+
# Micro::Case 73.247k (± 9.9%) i/s - 364.944k in 5.030449s
|
1275
|
+
# Micro::Case::Safe 73.489k (± 9.6%) i/s - 364.704k in 5.007282s
|
1276
|
+
# Micro::Case::Strict 61.980k (± 8.0%) i/s - 308.900k in 5.014821s
|
1275
1277
|
|
1276
1278
|
# Comparison:
|
1277
|
-
#
|
1278
|
-
#
|
1279
|
-
# Micro::Case:
|
1280
|
-
# Micro::Case::Strict:
|
1281
|
-
# Trailblazer::Operation:
|
1282
|
-
# Interactor:
|
1283
|
-
# Dry::Transaction:
|
1279
|
+
# Dry::Monads: 135386.9 i/s
|
1280
|
+
# Micro::Case::Safe: 73489.3 i/s - 1.84x (± 0.00) slower
|
1281
|
+
# Micro::Case: 73246.6 i/s - 1.85x (± 0.00) slower
|
1282
|
+
# Micro::Case::Strict: 61979.7 i/s - 2.18x (± 0.00) slower
|
1283
|
+
# Trailblazer::Operation: 29016.4 i/s - 4.67x (± 0.00) slower
|
1284
|
+
# Interactor: 27037.0 i/s - 5.01x (± 0.00) slower
|
1285
|
+
# Dry::Transaction: 8988.6 i/s - 15.06x (± 0.00) slower
|
1284
1286
|
```
|
1285
1287
|
</details>
|
1286
1288
|
|
@@ -1292,12 +1294,12 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/fai
|
|
1292
1294
|
|
1293
1295
|
| Gems / Abstraction | [Success results](https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/flow/success_results.rb) | [Failure results](https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/flow/failure_results.rb) |
|
1294
1296
|
| ------------------------------------------- | ----------------: | ----------------: |
|
1295
|
-
| Micro::Case::Result `pipe` method |
|
1296
|
-
| Micro::Case::Result `then` method |
|
1297
|
-
| Micro::Cases.flow |
|
1298
|
-
| Micro::Case class with an inner flow |
|
1299
|
-
| Micro::Case class including itself as a step|
|
1300
|
-
| Interactor::Organizer |
|
1297
|
+
| Micro::Case::Result `pipe` method | 80936.2 i/s | 78280.4 i/s |
|
1298
|
+
| Micro::Case::Result `then` method | 0x slower | 0x slower |
|
1299
|
+
| Micro::Cases.flow | 0x slower | 0x slower |
|
1300
|
+
| Micro::Case class with an inner flow | 1.72x slower | 1.68x slower |
|
1301
|
+
| Micro::Case class including itself as a step| 1.93x slower | 1.87x slower |
|
1302
|
+
| Interactor::Organizer | 3.33x slower | 3.22x slower |
|
1301
1303
|
|
1302
1304
|
\* The `Dry::Monads`, `Dry::Transaction`, `Trailblazer::Operation` gems are out of this analysis because all of them doesn't have this kind of feature.
|
1303
1305
|
|
@@ -1306,28 +1308,28 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/fai
|
|
1306
1308
|
|
1307
1309
|
```ruby
|
1308
1310
|
# Warming up --------------------------------------
|
1309
|
-
# Interactor::Organizer
|
1310
|
-
# Micro::Cases.flow([])
|
1311
|
-
# Micro::Case flow in a class
|
1312
|
-
# Micro::Case including the class
|
1313
|
-
# Micro::Case::Result#|
|
1314
|
-
# Micro::Case::Result#then
|
1311
|
+
# Interactor::Organizer 1.809k i/100ms
|
1312
|
+
# Micro::Cases.flow([]) 7.808k i/100ms
|
1313
|
+
# Micro::Case flow in a class 4.816k i/100ms
|
1314
|
+
# Micro::Case including the class 4.094k i/100ms
|
1315
|
+
# Micro::Case::Result#| 7.656k i/100ms
|
1316
|
+
# Micro::Case::Result#then 7.138k i/100ms
|
1315
1317
|
|
1316
1318
|
# Calculating -------------------------------------
|
1317
|
-
# Interactor::Organizer
|
1318
|
-
# Micro::Cases.flow([])
|
1319
|
-
# Micro::Case flow in a class
|
1320
|
-
# Micro::Case including the class
|
1321
|
-
# Micro::Case::Result#|
|
1322
|
-
# Micro::Case::Result#then
|
1319
|
+
# Interactor::Organizer 24.290k (±24.0%) i/s - 113.967k in 5.032825s
|
1320
|
+
# Micro::Cases.flow([]) 74.790k (±11.1%) i/s - 374.784k in 5.071740s
|
1321
|
+
# Micro::Case flow in a class 47.043k (± 8.0%) i/s - 235.984k in 5.047477s
|
1322
|
+
# Micro::Case including the class 42.030k (± 8.5%) i/s - 208.794k in 5.002138s
|
1323
|
+
# Micro::Case::Result#| 80.936k (±15.9%) i/s - 398.112k in 5.052531s
|
1324
|
+
# Micro::Case::Result#then 71.459k (± 8.8%) i/s - 356.900k in 5.030526s
|
1323
1325
|
|
1324
1326
|
# Comparison:
|
1325
|
-
# Micro::Case::Result#|:
|
1326
|
-
# Micro::
|
1327
|
-
# Micro::
|
1328
|
-
# Micro::Case flow in a class:
|
1329
|
-
# Micro::Case including the class:
|
1330
|
-
# Interactor::Organizer:
|
1327
|
+
# Micro::Case::Result#|: 80936.2 i/s
|
1328
|
+
# Micro::Cases.flow([]): 74790.1 i/s - same-ish: difference falls within error
|
1329
|
+
# Micro::Case::Result#then: 71459.5 i/s - same-ish: difference falls within error
|
1330
|
+
# Micro::Case flow in a class: 47042.6 i/s - 1.72x (± 0.00) slower
|
1331
|
+
# Micro::Case including the class: 42030.2 i/s - 1.93x (± 0.00) slower
|
1332
|
+
# Interactor::Organizer: 24290.3 i/s - 3.33x (± 0.00) slower
|
1331
1333
|
```
|
1332
1334
|
</details>
|
1333
1335
|
|
@@ -1336,28 +1338,28 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/fai
|
|
1336
1338
|
|
1337
1339
|
```ruby
|
1338
1340
|
# Warming up --------------------------------------
|
1339
|
-
# Interactor::Organizer
|
1340
|
-
# Micro::Cases.flow([])
|
1341
|
-
# Micro::Case flow in a class
|
1342
|
-
# Micro::Case including the class
|
1343
|
-
# Micro::Case::Result#|
|
1344
|
-
# Micro::Case::Result#then
|
1341
|
+
# Interactor::Organizer 1.734k i/100ms
|
1342
|
+
# Micro::Cases.flow([]) 7.515k i/100ms
|
1343
|
+
# Micro::Case flow in a class 4.636k i/100ms
|
1344
|
+
# Micro::Case including the class 4.114k i/100ms
|
1345
|
+
# Micro::Case::Result#| 7.588k i/100ms
|
1346
|
+
# Micro::Case::Result#then 6.681k i/100ms
|
1345
1347
|
|
1346
1348
|
# Calculating -------------------------------------
|
1347
|
-
# Interactor::Organizer
|
1348
|
-
# Micro::Cases.flow([])
|
1349
|
-
# Micro::Case flow in a class
|
1350
|
-
# Micro::Case including the class
|
1351
|
-
# Micro::Case::Result#|
|
1352
|
-
# Micro::Case::Result#then
|
1349
|
+
# Interactor::Organizer 24.280k (±24.5%) i/s - 112.710k in 5.013334s
|
1350
|
+
# Micro::Cases.flow([]) 74.999k (± 9.8%) i/s - 375.750k in 5.055777s
|
1351
|
+
# Micro::Case flow in a class 46.681k (± 9.3%) i/s - 236.436k in 5.105105s
|
1352
|
+
# Micro::Case including the class 41.921k (± 8.9%) i/s - 209.814k in 5.043622s
|
1353
|
+
# Micro::Case::Result#| 78.280k (±12.6%) i/s - 386.988k in 5.022146s
|
1354
|
+
# Micro::Case::Result#then 68.898k (± 8.8%) i/s - 347.412k in 5.080116s
|
1353
1355
|
|
1354
1356
|
# Comparison:
|
1355
|
-
# Micro::Case::Result#|:
|
1356
|
-
# Micro::
|
1357
|
-
# Micro::
|
1358
|
-
# Micro::Case flow in a class:
|
1359
|
-
# Micro::Case including the class:
|
1360
|
-
# Interactor::Organizer:
|
1357
|
+
# Micro::Case::Result#|: 78280.4 i/s
|
1358
|
+
# Micro::Cases.flow([]): 74999.4 i/s - same-ish: difference falls within error
|
1359
|
+
# Micro::Case::Result#then: 68898.4 i/s - same-ish: difference falls within error
|
1360
|
+
# Micro::Case flow in a class: 46681.0 i/s - 1.68x (± 0.00) slower
|
1361
|
+
# Micro::Case including the class: 41920.8 i/s - 1.87x (± 0.00) slower
|
1362
|
+
# Interactor::Organizer: 24280.0 i/s - 3.22x (± 0.00) slower
|
1361
1363
|
```
|
1362
1364
|
</details>
|
1363
1365
|
|