u-case 4.1.0 → 4.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e43c3e14dcb10002feb94f83f7d9289b49164e5908f3e8b58fa64e62d69796db
4
- data.tar.gz: 9f3a37d02e5e1c1369f74e8cdf14cc3038fad55df5db08bd1a330dd7004e5ba1
3
+ metadata.gz: feb30aaeb689640c0e2690c14e9f951896ced470bb3a9d31262c6441a37e3e57
4
+ data.tar.gz: 7fceb73bac6e4f6bc82558636679ad646c7c454e8ff516bb920632fb2e1c29a6
5
5
  SHA512:
6
- metadata.gz: 744d7c78a228a3ae9197762f9e259dd72ab2f1b8c20af968fca4cbe46931c703abd9aa051c4aa0669b61f51b14d42a990834dc4fc34dc2f60a9f20d68867fbab
7
- data.tar.gz: 7da45bc3752296dd000bf016ef35ff7c993d0ea5c2218e43e6f1d492ec7d41f457e7048cf8b281d0ecb6f40efe05df19d07809d69db3a7a41df02f10028a7e68
6
+ metadata.gz: 27d50ac0ce1cb8129f752d181a5707bfe3ac8c2e2228448945d5d80b4b4cb7d6481b4b9a860bb9c686e34306c6aed0acb2a65fb507a807882f2de128bee7cfbd
7
+ data.tar.gz: 0fca08fe550b5519f3a754b529e2e636b04a9433be093219526fab694596d431950f308c5a4f322b0a7810ec63a448ce8feec230dab60d405465c57c19e5c8ea
data/README.md CHANGED
@@ -39,7 +39,7 @@ 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.1.0 | https://github.com/serradura/u-case/blob/v4.x/README.md
42
+ 4.1.1 | 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
@@ -102,7 +102,7 @@ unreleased| https://github.com/serradura/u-case/blob/main/README.md
102
102
  | u-case | branch | ruby | activemodel | u-attributes |
103
103
  | -------------- | ------- | -------- | ------------- | ------------ |
104
104
  | unreleased | main | >= 2.2.0 | >= 3.2, < 6.1 | ~> 2.0 |
105
- | 4.1.0 | v4.x | >= 2.2.0 | >= 3.2, < 6.1 | ~> 2.0 |
105
+ | 4.1.1 | v4.x | >= 2.2.0 | >= 3.2, < 6.1 | ~> 2.0 |
106
106
  | 3.1.0 | v3.x | >= 2.2.0 | >= 3.2, < 6.1 | ~> 1.1 |
107
107
  | 2.6.0 | v2.x | >= 2.2.0 | >= 3.2, < 6.1 | ~> 1.1 |
108
108
  | 1.1.0 | v1.x | >= 2.2.0 | >= 3.2, < 6.1 | ~> 1.1 |
@@ -1200,42 +1200,44 @@ end
1200
1200
 
1201
1201
  | Gem / Abstraction | Iterations per second | Comparison |
1202
1202
  | ----------------- | --------------------: | ----------------: |
1203
- | Dry::Monads | 281515.4 | _**The Fastest**_ |
1204
- | **Micro::Case** | 151711.3 | 1.86x slower |
1205
- | Interactor | 53016.2 | 5.31x slower |
1206
- | Trailblazer::Operation | 38314.2 | 7.35x slower |
1207
- | Dry::Transaction | 10440.7 | 26.96x slower |
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.151k i/100ms
1215
- # Trailblazer::Operation 3.805k i/100ms
1216
- # Dry::Monads 28.153k i/100ms
1217
- # Dry::Transaction 1.063k i/100ms
1218
- # Micro::Case 15.159k i/100ms
1219
- # Micro::Case::Safe 15.172k i/100ms
1220
- # Micro::Case::Strict 12.557k i/100ms
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 53.016k 1.8%) i/s - 267.852k in 5.053967s
1224
- # Trailblazer::Operation 38.314k (± 1.7%) i/s - 194.055k in 5.066374s
1225
- # Dry::Monads 281.515k 2.4%) i/s - 1.408M in 5.003266s
1226
- # Dry::Transaction 10.441k2.1%) i/s - 53.150k in 5.092957s
1227
- # Micro::Case 151.711k1.7%) i/s - 773.109k in 5.097555s
1228
- # Micro::Case::Safe 145.801k6.7%) i/s - 728.256k in 5.022666s
1229
- # Micro::Case::Strict 115.636k 8.4%) i/s - 577.622k in 5.042079s
1224
+ # Interactor 59.746k29.9%) i/s - 274.128k in 5.049901s
1225
+ # Trailblazer::Operation
1226
+ # 28.424k15.8%) i/s - 141.546k in 5.087882s
1227
+ # Dry::Monads 315.635k6.1%) i/s - 1.588M in 5.048914s
1228
+ # Dry::Transaction 10.131k6.4%) i/s - 50.694k in 5.025150s
1229
+ # Micro::Case 75.838k9.7%) i/s - 379.728k in 5.052573s
1230
+ # Micro::Case::Safe 75.461k10.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: 281515.4 i/s
1233
- # Micro::Case: 151711.3 i/s - 1.86x (± 0.00) slower
1234
- # Micro::Case::Safe: 145800.8 i/s - 1.93x (± 0.00) slower
1235
- # Micro::Case::Strict: 115635.8 i/s - 2.43x (± 0.00) slower
1236
- # Interactor: 53016.2 i/s - 5.31x (± 0.00) slower
1237
- # Trailblazer::Operation: 38314.2 i/s - 7.35x (± 0.00) slower
1238
- # Dry::Transaction: 10440.7 i/s - 26.96x (± 0.00) slower
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
- | **Micro::Case** | 140794.0 | _**The Fastest**_ |
1249
- | Dry::Monads | 133865.5 | 0x slower |
1250
- | Trailblazer::Operation | 39829.9 | 3.53x slower |
1251
- | Interactor | 23856.0 | 5.90x slower |
1252
- | Dry::Transaction | 7975.0 | 17.65x slower |
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.351k i/100ms
1260
- # Trailblazer::Operation 3.941k i/100ms
1261
- # Dry::Monads 13.567k i/100ms
1262
- # Dry::Transaction 927.000 i/100ms
1263
- # Micro::Case 14.959k i/100ms
1264
- # Micro::Case::Safe 14.904k i/100ms
1265
- # Micro::Case::Strict 12.007k i/100ms
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 23.856k 1.7%) i/s - 119.901k in 5.027585s
1269
- # Trailblazer::Operation 39.830k 1.2%) i/s - 200.991k in 5.047032s
1270
- # Dry::Monads 133.866k 2.5%) i/s - 678.350k in 5.070899s
1271
- # Dry::Transaction 7.975k8.6%) i/s - 39.861k in 5.036260s
1272
- # Micro::Case 130.534k24.4%) i/s - 583.401k in 5.040907s
1273
- # Micro::Case::Safe 140.794k8.1%) i/s - 700.488k in 5.020935s
1274
- # Micro::Case::Strict 102.641k21.3%) i/s - 480.280k in 5.020354s
1270
+ # Interactor 27.037k24.9%) i/s - 128.674k in 5.102133s
1271
+ # Trailblazer::Operation 29.016k12.4%) i/s - 145.266k in 5.074991s
1272
+ # Dry::Monads 135.387k15.1%) i/s - 669.300k in 5.055356s
1273
+ # Dry::Transaction 8.989k9.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.489k9.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
- # Micro::Case::Safe: 140794.0 i/s
1278
- # Dry::Monads: 133865.5 i/s - same-ish: difference falls within error
1279
- # Micro::Case: 130534.0 i/s - same-ish: difference falls within error
1280
- # Micro::Case::Strict: 102640.7 i/s - 1.37x (± 0.00) slower
1281
- # Trailblazer::Operation: 39829.9 i/s - 3.53x (± 0.00) slower
1282
- # Interactor: 23856.0 i/s - 5.90x (± 0.00) slower
1283
- # Dry::Transaction: 7975.0 i/s - 17.65x (± 0.00) slower
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 | 172734.4 i/s | 153745.6 i/s |
1296
- | Micro::Case::Result `then` method | 1.24x slower | 1.21x slower |
1297
- | Micro::Cases.flow | 1.30x slower | 1.30x slower |
1298
- | Micro::Case class with an inner flow | 2.05x slower | 1.98x slower |
1299
- | Micro::Case class including itself as a step| 2.14x slower | 2.09x slower |
1300
- | Interactor::Organizer | 7.69x slower | 7.03x slower |
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 2.163k i/100ms
1310
- # Micro::Cases.flow([]) 13.158k i/100ms
1311
- # Micro::Case flow in a class 8.400k i/100ms
1312
- # Micro::Case including the class 8.008k i/100ms
1313
- # Micro::Case::Result#| 17.151k i/100ms
1314
- # Micro::Case::Result#then 14.121k i/100ms
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 22.467k 1.8%) i/s - 112.476k in 5.007787s
1318
- # Micro::Cases.flow([]) 133.183k 1.5%) i/s - 671.058k in 5.039815s
1319
- # Micro::Case flow in a class 84.083k1.8%) i/s - 428.400k in 5.096623s
1320
- # Micro::Case including the class 80.574k1.6%) i/s - 408.408k in 5.070029s
1321
- # Micro::Case::Result#| 172.734k 1.1%) i/s - 874.701k in 5.064429s
1322
- # Micro::Case::Result#then 139.799k1.7%) i/s - 706.050k in 5.052035s
1319
+ # Interactor::Organizer 24.290k24.0%) i/s - 113.967k in 5.032825s
1320
+ # Micro::Cases.flow([]) 74.790k11.1%) i/s - 374.784k in 5.071740s
1321
+ # Micro::Case flow in a class 47.043k8.0%) i/s - 235.984k in 5.047477s
1322
+ # Micro::Case including the class 42.030k8.5%) i/s - 208.794k in 5.002138s
1323
+ # Micro::Case::Result#| 80.936k15.9%) i/s - 398.112k in 5.052531s
1324
+ # Micro::Case::Result#then 71.459k8.8%) i/s - 356.900k in 5.030526s
1323
1325
 
1324
1326
  # Comparison:
1325
- # Micro::Case::Result#|: 172734.4 i/s
1326
- # Micro::Case::Result#then: 139799.0 i/s - 1.24x (± 0.00) slower
1327
- # Micro::Cases.flow([]): 133182.9 i/s - 1.30x (± 0.00) slower
1328
- # Micro::Case flow in a class: 84082.6 i/s - 2.05x (± 0.00) slower
1329
- # Micro::Case including the class: 80574.3 i/s - 2.14x (± 0.00) slower
1330
- # Interactor::Organizer: 22467.4 i/s - 7.69x (± 0.00) slower
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 2.167k i/100ms
1340
- # Micro::Cases.flow([]) 11.797k i/100ms
1341
- # Micro::Case flow in a class 7.783k i/100ms
1342
- # Micro::Case including the class 7.097k i/100ms
1343
- # Micro::Case::Result#| 14.398k i/100ms
1344
- # Micro::Case::Result#then 12.719k i/100ms
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 21.863k 2.5%) i/s - 110.517k in 5.058420s
1348
- # Micro::Cases.flow([]) 118.124k1.8%) i/s - 601.647k in 5.095102s
1349
- # Micro::Case flow in a class 77.801k1.5%) i/s - 389.150k in 5.003002s
1350
- # Micro::Case including the class 73.533k2.1%) i/s - 369.044k in 5.021076s
1351
- # Micro::Case::Result#| 153.746k 1.5%) i/s - 777.492k in 5.058177s
1352
- # Micro::Case::Result#then 126.897k1.7%) i/s - 635.950k in 5.013059s
1349
+ # Interactor::Organizer 24.280k24.5%) i/s - 112.710k in 5.013334s
1350
+ # Micro::Cases.flow([]) 74.999k9.8%) i/s - 375.750k in 5.055777s
1351
+ # Micro::Case flow in a class 46.681k9.3%) i/s - 236.436k in 5.105105s
1352
+ # Micro::Case including the class 41.921k8.9%) i/s - 209.814k in 5.043622s
1353
+ # Micro::Case::Result#| 78.280k12.6%) i/s - 386.988k in 5.022146s
1354
+ # Micro::Case::Result#then 68.898k8.8%) i/s - 347.412k in 5.080116s
1353
1355
 
1354
1356
  # Comparison:
1355
- # Micro::Case::Result#|: 153745.6 i/s
1356
- # Micro::Case::Result#then: 126896.6 i/s - 1.21x (± 0.00) slower
1357
- # Micro::Cases.flow([]): 118123.9 i/s - 1.30x (± 0.00) slower
1358
- # Micro::Case flow in a class: 77800.7 i/s - 1.98x (± 0.00) slower
1359
- # Micro::Case including the class: 73532.9 i/s - 2.09x (± 0.00) slower
1360
- # Interactor::Organizer: 21862.9 i/s - 7.03x (± 0.00) slower
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
 
@@ -39,7 +39,7 @@ Principais objetivos deste projeto:
39
39
  Versão | Documentação
40
40
  --------- | -------------
41
41
  unreleased| https://github.com/serradura/u-case/blob/main/README.md
42
- 4.1.0 | https://github.com/serradura/u-case/blob/v4.x/README.md
42
+ 4.1.1 | 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
@@ -100,7 +100,7 @@ unreleased| https://github.com/serradura/u-case/blob/main/README.md
100
100
 
101
101
  | u-case | branch | ruby | activemodel | u-attributes |
102
102
  | -------------- | ------- | -------- | ------------- | ------------ |
103
- | 4.1.0 | main | >= 2.2.0 | >= 3.2, < 6.1 | ~> 2.0 |
103
+ | 4.1.1 | main | >= 2.2.0 | >= 3.2, < 6.1 | ~> 2.0 |
104
104
  | 3.1.0 | v3.x | >= 2.2.0 | >= 3.2, < 6.1 | ~> 1.1 |
105
105
  | 2.6.0 | v2.x | >= 2.2.0 | >= 3.2, < 6.1 | ~> 1.1 |
106
106
  | 1.1.0 | v1.x | >= 2.2.0 | >= 3.2, < 6.1 | ~> 1.1 |
@@ -1201,44 +1201,46 @@ end
1201
1201
 
1202
1202
  #### Success results
1203
1203
 
1204
- | Gem / Abstração | Iterações por segundo | Comparação |
1205
- | ----------------- | --------------------: | ----------------: |
1206
- | Dry::Monads | 281515.4 | _**O mais rápido**_ |
1207
- | **Micro::Case** | 151711.3 | 1.86x mais lento |
1208
- | Interactor | 53016.2 | 5.31x mais lento |
1209
- | Trailblazer::Operation | 38314.2 | 7.35x mais lento |
1210
- | Dry::Transaction | 10440.7 | 26.96x mais lento |
1204
+ | Gem / Abstração | Iterações por segundo | Comparação |
1205
+ | ----------------- | --------------------: | -------------------: |
1206
+ | Dry::Monads | 315635.1 | _**O mais rápido**_ |
1207
+ | **Micro::Case** | 75837.7 | 4.16x mais lento |
1208
+ | Interactor | 59745.5 | 5.28x mais lento |
1209
+ | Trailblazer::Operation | 28423.9 | 11.10x mais lento |
1210
+ | Dry::Transaction | 10130.9 | 31.16x mais lento |
1211
1211
 
1212
1212
  <details>
1213
1213
  <summary>Show the full <a href="https://github.com/evanphx/benchmark-ips">benchmark/ips</a> results.</summary>
1214
1214
 
1215
1215
  ```ruby
1216
1216
  # Warming up --------------------------------------
1217
- # Interactor 5.151k i/100ms
1218
- # Trailblazer::Operation 3.805k i/100ms
1219
- # Dry::Monads 28.153k i/100ms
1220
- # Dry::Transaction 1.063k i/100ms
1221
- # Micro::Case 15.159k i/100ms
1222
- # Micro::Case::Safe 15.172k i/100ms
1223
- # Micro::Case::Strict 12.557k i/100ms
1217
+ # Interactor 5.711k i/100ms
1218
+ # Trailblazer::Operation
1219
+ # 2.283k i/100ms
1220
+ # Dry::Monads 31.130k i/100ms
1221
+ # Dry::Transaction 994.000 i/100ms
1222
+ # Micro::Case 7.911k i/100ms
1223
+ # Micro::Case::Safe 7.911k i/100ms
1224
+ # Micro::Case::Strict 6.248k i/100ms
1224
1225
 
1225
1226
  # Calculating -------------------------------------
1226
- # Interactor 53.016k 1.8%) i/s - 267.852k in 5.053967s
1227
- # Trailblazer::Operation 38.314k (± 1.7%) i/s - 194.055k in 5.066374s
1228
- # Dry::Monads 281.515k 2.4%) i/s - 1.408M in 5.003266s
1229
- # Dry::Transaction 10.441k2.1%) i/s - 53.150k in 5.092957s
1230
- # Micro::Case 151.711k1.7%) i/s - 773.109k in 5.097555s
1231
- # Micro::Case::Safe 145.801k6.7%) i/s - 728.256k in 5.022666s
1232
- # Micro::Case::Strict 115.636k 8.4%) i/s - 577.622k in 5.042079s
1227
+ # Interactor 59.746k29.9%) i/s - 274.128k in 5.049901s
1228
+ # Trailblazer::Operation
1229
+ # 28.424k15.8%) i/s - 141.546k in 5.087882s
1230
+ # Dry::Monads 315.635k6.1%) i/s - 1.588M in 5.048914s
1231
+ # Dry::Transaction 10.131k6.4%) i/s - 50.694k in 5.025150s
1232
+ # Micro::Case 75.838k9.7%) i/s - 379.728k in 5.052573s
1233
+ # Micro::Case::Safe 75.461k10.1%) i/s - 379.728k in 5.079238s
1234
+ # Micro::Case::Strict 64.235k (± 9.0%) i/s - 324.896k in 5.097028s
1233
1235
 
1234
1236
  # Comparison:
1235
- # Dry::Monads: 281515.4 i/s
1236
- # Micro::Case: 151711.3 i/s - 1.86x (± 0.00) slower
1237
- # Micro::Case::Safe: 145800.8 i/s - 1.93x (± 0.00) slower
1238
- # Micro::Case::Strict: 115635.8 i/s - 2.43x (± 0.00) slower
1239
- # Interactor: 53016.2 i/s - 5.31x (± 0.00) slower
1240
- # Trailblazer::Operation: 38314.2 i/s - 7.35x (± 0.00) slower
1241
- # Dry::Transaction: 10440.7 i/s - 26.96x (± 0.00) slower
1237
+ # Dry::Monads: 315635.1 i/s
1238
+ # Micro::Case: 75837.7 i/s - 4.16x (± 0.00) slower
1239
+ # Micro::Case::Safe: 75461.3 i/s - 4.18x (± 0.00) slower
1240
+ # Micro::Case::Strict: 64234.9 i/s - 4.91x (± 0.00) slower
1241
+ # Interactor: 59745.5 i/s - 5.28x (± 0.00) slower
1242
+ # Trailblazer::Operation: 28423.9 i/s - 11.10x (± 0.00) slower
1243
+ # Dry::Transaction: 10130.9 i/s - 31.16x (± 0.00) slower
1242
1244
  ```
1243
1245
  </details>
1244
1246
 
@@ -1246,44 +1248,44 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/suc
1246
1248
 
1247
1249
  #### Failure results
1248
1250
 
1249
- | Gem / Abstração | Iterações por segundo | Comparação |
1250
- | ----------------- | --------------------: | ----------------: |
1251
- | **Micro::Case** | 140794.0 | _**O mais rápido**_ |
1252
- | Dry::Monads | 133865.5 | 0x mais devagar |
1253
- | Trailblazer::Operation | 39829.9 | 3.53x mais devagar |
1254
- | Interactor | 23856.0 | 5.90x mais devagar |
1255
- | Dry::Transaction | 7975.0 | 17.65x mais devagar |
1251
+ | Gem / Abstração | Iterações por segundo | Comparação |
1252
+ | ----------------- | --------------------: | -------------------: |
1253
+ | Dry::Monads | 135386.9 | _**O mais rápido**_ |
1254
+ | **Micro::Case** | 73489.3 | 1.85x mais lento |
1255
+ | Trailblazer::Operation | 29016.4 | 4.67x mais lento |
1256
+ | Interactor | 27037.0 | 5.01x mais lento |
1257
+ | Dry::Transaction | 8988.6 | 15.06x mais lento |
1256
1258
 
1257
1259
  <details>
1258
1260
  <summary>Mostrar o resultado completo do <a href="https://github.com/evanphx/benchmark-ips">benchmark/ips</a>.</summary>
1259
1261
 
1260
1262
  ```ruby
1261
1263
  # Warming up --------------------------------------
1262
- # Interactor 2.351k i/100ms
1263
- # Trailblazer::Operation 3.941k i/100ms
1264
- # Dry::Monads 13.567k i/100ms
1265
- # Dry::Transaction 927.000 i/100ms
1266
- # Micro::Case 14.959k i/100ms
1267
- # Micro::Case::Safe 14.904k i/100ms
1268
- # Micro::Case::Strict 12.007k i/100ms
1264
+ # Interactor 2.626k i/100ms
1265
+ # Trailblazer::Operation 2.343k i/100ms
1266
+ # Dry::Monads 13.386k i/100ms
1267
+ # Dry::Transaction 868.000 i/100ms
1268
+ # Micro::Case 7.603k i/100ms
1269
+ # Micro::Case::Safe 7.598k i/100ms
1270
+ # Micro::Case::Strict 6.178k i/100ms
1269
1271
 
1270
1272
  # Calculating -------------------------------------
1271
- # Interactor 23.856k 1.7%) i/s - 119.901k in 5.027585s
1272
- # Trailblazer::Operation 39.830k 1.2%) i/s - 200.991k in 5.047032s
1273
- # Dry::Monads 133.866k 2.5%) i/s - 678.350k in 5.070899s
1274
- # Dry::Transaction 7.975k8.6%) i/s - 39.861k in 5.036260s
1275
- # Micro::Case 130.534k24.4%) i/s - 583.401k in 5.040907s
1276
- # Micro::Case::Safe 140.794k8.1%) i/s - 700.488k in 5.020935s
1277
- # Micro::Case::Strict 102.641k21.3%) i/s - 480.280k in 5.020354s
1273
+ # Interactor 27.037k24.9%) i/s - 128.674k in 5.102133s
1274
+ # Trailblazer::Operation 29.016k12.4%) i/s - 145.266k in 5.074991s
1275
+ # Dry::Monads 135.387k15.1%) i/s - 669.300k in 5.055356s
1276
+ # Dry::Transaction 8.989k9.2%) i/s - 45.136k in 5.084820s
1277
+ # Micro::Case 73.247k 9.9%) i/s - 364.944k in 5.030449s
1278
+ # Micro::Case::Safe 73.489k9.6%) i/s - 364.704k in 5.007282s
1279
+ # Micro::Case::Strict 61.980k 8.0%) i/s - 308.900k in 5.014821s
1278
1280
 
1279
1281
  # Comparison:
1280
- # Micro::Case::Safe: 140794.0 i/s
1281
- # Dry::Monads: 133865.5 i/s - same-ish: difference falls within error
1282
- # Micro::Case: 130534.0 i/s - same-ish: difference falls within error
1283
- # Micro::Case::Strict: 102640.7 i/s - 1.37x (± 0.00) slower
1284
- # Trailblazer::Operation: 39829.9 i/s - 3.53x (± 0.00) slower
1285
- # Interactor: 23856.0 i/s - 5.90x (± 0.00) slower
1286
- # Dry::Transaction: 7975.0 i/s - 17.65x (± 0.00) slower
1282
+ # Dry::Monads: 135386.9 i/s
1283
+ # Micro::Case::Safe: 73489.3 i/s - 1.84x (± 0.00) slower
1284
+ # Micro::Case: 73246.6 i/s - 1.85x (± 0.00) slower
1285
+ # Micro::Case::Strict: 61979.7 i/s - 2.18x (± 0.00) slower
1286
+ # Trailblazer::Operation: 29016.4 i/s - 4.67x (± 0.00) slower
1287
+ # Interactor: 27037.0 i/s - 5.01x (± 0.00) slower
1288
+ # Dry::Transaction: 8988.6 i/s - 15.06x (± 0.00) slower
1287
1289
  ```
1288
1290
  </details>
1289
1291
 
@@ -1295,12 +1297,12 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/fai
1295
1297
 
1296
1298
  | Gem / Abstração | [Resultados de sucesso](https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/flow/success_results.rb) | [Resultados de falha](https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/flow/failure_results.rb) |
1297
1299
  | ------------------------------------------- | ----------------: | ----------------: |
1298
- | Micro::Case::Result `pipe` method | 172734.4 i/s | 153745.6 i/s |
1299
- | Micro::Case::Result `then` method | 1.24x mais devagar | 1.21x mais devagar |
1300
- | Micro::Cases.flow | 1.30x mais devagar | 1.30x mais devagar |
1301
- | Micro::Case class with an inner flow | 2.05x mais devagar | 1.98x mais devagar |
1302
- | Micro::Case class including itself as a step| 2.14x mais devagar | 2.09x mais devagar |
1303
- | Interactor::Organizer | 7.69x mais devagar | 7.03x mais devagar |
1300
+ | Micro::Case::Result `pipe` method | 80936.2 i/s | 78280.4 i/s |
1301
+ | Micro::Case::Result `then` method | 0x mais lento | 0x mais lento |
1302
+ | Micro::Cases.flow | 0x mais lento | 0x mais lento |
1303
+ | Micro::Case class with an inner flow | 1.72x mais lento | 1.68x mais lento |
1304
+ | Micro::Case class including itself as a step| 1.93x mais lento | 1.87x mais lento |
1305
+ | Interactor::Organizer | 3.33x mais lento | 3.22x mais lento |
1304
1306
 
1305
1307
  \* As gems `Dry::Monads`, `Dry::Transaction`, `Trailblazer::Operation` estão fora desta análise por não terem esse tipo de funcionalidade.
1306
1308
 
@@ -1309,28 +1311,28 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/fai
1309
1311
 
1310
1312
  ```ruby
1311
1313
  # Warming up --------------------------------------
1312
- # Interactor::Organizer 2.163k i/100ms
1313
- # Micro::Cases.flow([]) 13.158k i/100ms
1314
- # Micro::Case flow in a class 8.400k i/100ms
1315
- # Micro::Case including the class 8.008k i/100ms
1316
- # Micro::Case::Result#| 17.151k i/100ms
1317
- # Micro::Case::Result#then 14.121k i/100ms
1314
+ # Interactor::Organizer 1.809k i/100ms
1315
+ # Micro::Cases.flow([]) 7.808k i/100ms
1316
+ # Micro::Case flow in a class 4.816k i/100ms
1317
+ # Micro::Case including the class 4.094k i/100ms
1318
+ # Micro::Case::Result#| 7.656k i/100ms
1319
+ # Micro::Case::Result#then 7.138k i/100ms
1318
1320
 
1319
1321
  # Calculating -------------------------------------
1320
- # Interactor::Organizer 22.467k 1.8%) i/s - 112.476k in 5.007787s
1321
- # Micro::Cases.flow([]) 133.183k 1.5%) i/s - 671.058k in 5.039815s
1322
- # Micro::Case flow in a class 84.083k1.8%) i/s - 428.400k in 5.096623s
1323
- # Micro::Case including the class 80.574k1.6%) i/s - 408.408k in 5.070029s
1324
- # Micro::Case::Result#| 172.734k 1.1%) i/s - 874.701k in 5.064429s
1325
- # Micro::Case::Result#then 139.799k1.7%) i/s - 706.050k in 5.052035s
1322
+ # Interactor::Organizer 24.290k24.0%) i/s - 113.967k in 5.032825s
1323
+ # Micro::Cases.flow([]) 74.790k11.1%) i/s - 374.784k in 5.071740s
1324
+ # Micro::Case flow in a class 47.043k8.0%) i/s - 235.984k in 5.047477s
1325
+ # Micro::Case including the class 42.030k8.5%) i/s - 208.794k in 5.002138s
1326
+ # Micro::Case::Result#| 80.936k15.9%) i/s - 398.112k in 5.052531s
1327
+ # Micro::Case::Result#then 71.459k8.8%) i/s - 356.900k in 5.030526s
1326
1328
 
1327
1329
  # Comparison:
1328
- # Micro::Case::Result#|: 172734.4 i/s
1329
- # Micro::Case::Result#then: 139799.0 i/s - 1.24x (± 0.00) slower
1330
- # Micro::Cases.flow([]): 133182.9 i/s - 1.30x (± 0.00) slower
1331
- # Micro::Case flow in a class: 84082.6 i/s - 2.05x (± 0.00) slower
1332
- # Micro::Case including the class: 80574.3 i/s - 2.14x (± 0.00) slower
1333
- # Interactor::Organizer: 22467.4 i/s - 7.69x (± 0.00) slower
1330
+ # Micro::Case::Result#|: 80936.2 i/s
1331
+ # Micro::Cases.flow([]): 74790.1 i/s - same-ish: difference falls within error
1332
+ # Micro::Case::Result#then: 71459.5 i/s - same-ish: difference falls within error
1333
+ # Micro::Case flow in a class: 47042.6 i/s - 1.72x (± 0.00) slower
1334
+ # Micro::Case including the class: 42030.2 i/s - 1.93x (± 0.00) slower
1335
+ # Interactor::Organizer: 24290.3 i/s - 3.33x (± 0.00) slower
1334
1336
  ```
1335
1337
  </details>
1336
1338
 
@@ -1339,28 +1341,28 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/fai
1339
1341
 
1340
1342
  ```ruby
1341
1343
  # Warming up --------------------------------------
1342
- # Interactor::Organizer 2.167k i/100ms
1343
- # Micro::Cases.flow([]) 11.797k i/100ms
1344
- # Micro::Case flow in a class 7.783k i/100ms
1345
- # Micro::Case including the class 7.097k i/100ms
1346
- # Micro::Case::Result#| 14.398k i/100ms
1347
- # Micro::Case::Result#then 12.719k i/100ms
1344
+ # Interactor::Organizer 1.734k i/100ms
1345
+ # Micro::Cases.flow([]) 7.515k i/100ms
1346
+ # Micro::Case flow in a class 4.636k i/100ms
1347
+ # Micro::Case including the class 4.114k i/100ms
1348
+ # Micro::Case::Result#| 7.588k i/100ms
1349
+ # Micro::Case::Result#then 6.681k i/100ms
1348
1350
 
1349
1351
  # Calculating -------------------------------------
1350
- # Interactor::Organizer 21.863k 2.5%) i/s - 110.517k in 5.058420s
1351
- # Micro::Cases.flow([]) 118.124k1.8%) i/s - 601.647k in 5.095102s
1352
- # Micro::Case flow in a class 77.801k1.5%) i/s - 389.150k in 5.003002s
1353
- # Micro::Case including the class 73.533k2.1%) i/s - 369.044k in 5.021076s
1354
- # Micro::Case::Result#| 153.746k 1.5%) i/s - 777.492k in 5.058177s
1355
- # Micro::Case::Result#then 126.897k1.7%) i/s - 635.950k in 5.013059s
1352
+ # Interactor::Organizer 24.280k24.5%) i/s - 112.710k in 5.013334s
1353
+ # Micro::Cases.flow([]) 74.999k9.8%) i/s - 375.750k in 5.055777s
1354
+ # Micro::Case flow in a class 46.681k9.3%) i/s - 236.436k in 5.105105s
1355
+ # Micro::Case including the class 41.921k8.9%) i/s - 209.814k in 5.043622s
1356
+ # Micro::Case::Result#| 78.280k12.6%) i/s - 386.988k in 5.022146s
1357
+ # Micro::Case::Result#then 68.898k8.8%) i/s - 347.412k in 5.080116s
1356
1358
 
1357
1359
  # Comparison:
1358
- # Micro::Case::Result#|: 153745.6 i/s
1359
- # Micro::Case::Result#then: 126896.6 i/s - 1.21x (± 0.00) slower
1360
- # Micro::Cases.flow([]): 118123.9 i/s - 1.30x (± 0.00) slower
1361
- # Micro::Case flow in a class: 77800.7 i/s - 1.98x (± 0.00) slower
1362
- # Micro::Case including the class: 73532.9 i/s - 2.09x (± 0.00) slower
1363
- # Interactor::Organizer: 21862.9 i/s - 7.03x (± 0.00) slower
1360
+ # Micro::Case::Result#|: 78280.4 i/s
1361
+ # Micro::Cases.flow([]): 74999.4 i/s - same-ish: difference falls within error
1362
+ # Micro::Case::Result#then: 68898.4 i/s - same-ish: difference falls within error
1363
+ # Micro::Case flow in a class: 46681.0 i/s - 1.68x (± 0.00) slower
1364
+ # Micro::Case including the class: 41920.8 i/s - 1.87x (± 0.00) slower
1365
+ # Interactor::Organizer: 24280.0 i/s - 3.22x (± 0.00) slower
1364
1366
  ```
1365
1367
  </details>
1366
1368
 
@@ -129,11 +129,25 @@ module Micro
129
129
  __flow_set(__flow_use_cases_get) if !__flow_get__ && __flow_use_cases
130
130
  end
131
131
 
132
+ InspectKey = :__inspect_key__ # :nodoc:
133
+
132
134
  def self.inspect
133
- if __flow_use_cases
134
- '<%s (%s) use_cases=%s>' % [self, __flow_builder__, @__flow_use_cases]
135
- else
136
- '<%s (%s) attributes=%s>' % [self, self.superclass, attributes]
135
+ ids = (Thread.current[InspectKey] ||= [])
136
+
137
+ if ids.include?(object_id)
138
+ return sprintf('#<%s: {...}>', self)
139
+ end
140
+
141
+ begin
142
+ ids << object_id
143
+
144
+ if __flow_use_cases
145
+ return '<%s (%s) use_cases=%s>' % [self, __flow_builder__, @__flow_use_cases]
146
+ else
147
+ return '<%s (%s) attributes=%s>' % [self, self.superclass, attributes]
148
+ end
149
+ ensure
150
+ ids.pop
137
151
  end
138
152
  end
139
153
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Micro
4
4
  class Case
5
- VERSION = '4.1.0'.freeze
5
+ VERSION = '4.1.1'.freeze
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: u-case
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rodrigo Serradura
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-14 00:00:00.000000000 Z
11
+ date: 2020-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kind