Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Treat transducers as iterator transforms at surface syntax #319

Merged
merged 23 commits into from
Jul 4, 2020
Merged

Conversation

tkf
Copy link
Member

@tkf tkf commented Jun 29, 2020

close #67

  • Replace 0.4.XX with appropriate version number

Commit Message

Treat transducers as iterator transforms at surface syntax (#319)

This patch implements the idea discussed in #67. That is to say,

collect(Map(f) |> Filter(g), xs)
foldl(+, Map(f) |> Filter(g), xs)

is now written as

xs |> Map(f) |> Filter(g) |> collect
foldl(+, xs |> Map(f) |> Filter(g))

or

collect(opcompose(Map(f), Filter(g)), xs)
foldl(+, opcompose(Map(f), Filter(g)), xs)

collect(Map(f)  Filter(g), xs)
foldl(+, Map(f)  Filter(g), xs)

or even (not recommended)

collect(Filter(g)((Map(f)(xs))))  # Julia >= 1.3

collect(Filter(g)  Map(f), xs)
foldl(+, Filter(g)  Map(f), xs)

collect((Filter(g)'  Map(f)')', xs)
foldl(+, (Filter(g)'  Map(f)')', xs)

collect((Map(f)'  Filter(g)')', xs)
foldl(+, (Map(f)'  Filter(g)')', xs)

Above syntax are all compatible with the view that xf(itr) is an
iterator transformation. OTOH, xf' (adjoint(::Transducer)) is now
the "classic" transducer; i.e., reducing function transformation.
This makes it easy to use transducers with other "reducing function
combinators" like TeeRF:

rf = TeeRF(Filter(iseven)'(min), Filter(isodd)'(max))
reduce(rf, Map(identity), xs)  # => (even minimum, odd maximum)

This PR only deprecates ::Transducer |> ::Transducer to help
migration from the old syntax.

@codecov
Copy link

codecov bot commented Jun 29, 2020

Codecov Report

Merging #319 into master will decrease coverage by 0.11%.
The diff coverage is 86.36%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #319      +/-   ##
==========================================
- Coverage   90.68%   90.56%   -0.12%     
==========================================
  Files          24       25       +1     
  Lines        1471     1495      +24     
==========================================
+ Hits         1334     1354      +20     
- Misses        137      141       +4     
Impacted Files Coverage Δ
src/Transducers.jl 90.90% <ø> (ø)
src/broadcasting.jl 88.88% <ø> (ø)
src/combinators.jl 96.66% <ø> (ø)
src/groupby.jl 82.14% <ø> (+1.78%) ⬆️
src/interop/onlinestats.jl 85.71% <ø> (ø)
src/reduce.jl 79.24% <ø> (ø)
src/simd.jl 100.00% <ø> (ø)
src/core.jl 87.29% <69.23%> (-1.22%) ⬇️
src/show.jl 89.51% <83.33%> (-0.65%) ⬇️
src/comprehensions.jl 82.60% <100.00%> (ø)
... and 10 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update db547f9...951def8. Read the comment docs.

@github-actions
Copy link
Contributor

Benchmark result

Judge result

Benchmark Report for /home/runner/work/Transducers.jl/Transducers.jl

Job Properties

  • Time of benchmarks:
    • Target: 29 Jun 2020 - 06:53
    • Baseline: 29 Jun 2020 - 06:57
  • Package commits:
    • Target: fa428b
    • Baseline: 8ccb58
  • Julia commits:
    • Target: 44fa15
    • Baseline: 44fa15
  • Julia command flags:
    • Target: None
    • Baseline: None
  • Environment variables:
    • Target: OMP_NUM_THREADS => 1 JULIA_NUM_THREADS => 1
    • Baseline: OMP_NUM_THREADS => 1 JULIA_NUM_THREADS => 1

Results

A ratio greater than 1.0 denotes a possible regression (marked with ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID time ratio memory ratio
["collect", "identity-float"] 1.11 (5%) ❌ 1.00 (1%)
["findall", "xf-iter"] 1.13 (5%) ❌ 1.00 (1%)
["gemm", "mul", "man", "false", "8"] 1.30 (5%) ❌ 1.00 (1%)
["gemm", "mul", "man", "ivdep", "8"] 1.29 (5%) ❌ 1.00 (1%)
["gemm", "mul", "man", "true", "8"] 1.35 (5%) ❌ 1.00 (1%)
["gemm", "mul", "xf", "false", "32"] 0.93 (5%) ✅ 1.00 (1%)
["gemm", "mul", "xf", "false", "8"] 1.06 (5%) ❌ 1.00 (1%)
["gemm", "mul", "xf", "ivdep", "8"] 1.31 (5%) ❌ 1.00 (1%)
["gemm", "mul", "xf", "true", "32"] 0.94 (5%) ✅ 1.00 (1%)
["gemm", "mul", "xf", "true", "8"] 1.32 (5%) ❌ 1.00 (1%)
["missing_dot", "rf"] 0.92 (5%) ✅ 1.00 (1%)
["missing_dot", "rf_nota"] 0.94 (5%) ✅ 1.00 (1%)
["missing_dot", "xf"] 1.07 (5%) ❌ 1.00 (1%)
["missing_dot", "xf_nota"] 1.07 (5%) ❌ 1.00 (1%)

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["cat"]
  • ["collect"]
  • ["dot"]
  • ["filter_map_map!"]
  • ["filter_map_reduce"]
  • ["findall"]
  • ["gemm", "fusedmul", "blas"]
  • ["gemm", "fusedmul", "xf"]
  • ["gemm", "mul", "linalg"]
  • ["gemm", "mul", "man", "false"]
  • ["gemm", "mul", "man", "ivdep"]
  • ["gemm", "mul", "man", "true"]
  • ["gemm", "mul", "xf", "false"]
  • ["gemm", "mul", "xf", "ivdep"]
  • ["gemm", "mul", "xf", "true"]
  • ["groupby", "sum"]
  • ["missing_argmax"]
  • ["missing_dot"]
  • ["overhead"]
  • ["partition_by"]

Julia versioninfo

Target

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2394 MHz      27900 s          0 s       1398 s      33606 s          0 s
       #2  2394 MHz      31606 s          0 s       1254 s      29927 s          0 s
       
  Memory: 6.764884948730469 GB (3007.69140625 MB free)
  Uptime: 646.0 sec
  Load Avg:  1.0  0.94189453125  0.5751953125
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, haswell)

Baseline

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2394 MHz      44190 s          0 s       1530 s      41828 s          0 s
       #2  2394 MHz      39976 s          0 s       1366 s      46126 s          0 s
       
  Memory: 6.764884948730469 GB (2963.9140625 MB free)
  Uptime: 893.0 sec
  Load Avg:  1.009765625  1.0  0.69189453125
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, haswell)

Target result

Benchmark Report for /home/runner/work/Transducers.jl/Transducers.jl

Job Properties

  • Time of benchmark: 29 Jun 2020 - 6:53
  • Package commit: fa428b
  • Julia commit: 44fa15
  • Julia command flags: None
  • Environment variables: OMP_NUM_THREADS => 1 JULIA_NUM_THREADS => 1

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["cat", "base"] 1.980 μs (5%)
["cat", "xf"] 2.022 μs (5%) 80 bytes (1%) 3
["collect", "filter-missing"] 123.201 μs (5%) 345.36 KiB (1%) 10018
["collect", "identity-float"] 109.900 μs (5%) 569.20 KiB (1%) 10018
["collect", "identity-union"] 360.901 μs (5%) 705.22 KiB (1%) 16673
["dot", "blas"] 2.333 μs (5%)
["dot", "man"] 2.322 μs (5%)
["dot", "rf"] 2.722 μs (5%)
["dot", "xf"] 2.722 μs (5%)
["filter_map_map!", "man"] 67.001 μs (5%)
["filter_map_map!", "xf"] 710.601 μs (5%) 304 bytes (1%) 17
["filter_map_reduce", "man"] 259.900 μs (5%)
["filter_map_reduce", "xf"] 259.900 μs (5%)
["findall", "base"] 1.032 ms (5%) 2.00 MiB (1%) 21
["findall", "xf-array"] 981.404 μs (5%) 3.04 MiB (1%) 99594
["findall", "xf-iter"] 4.353 ms (5%) 9.63 MiB (1%) 299935
["gemm", "fusedmul", "blas", "16"] 4.821 ms (5%)
["gemm", "fusedmul", "blas", "2"] 3.565 ms (5%)
["gemm", "fusedmul", "blas", "32"] 6.499 ms (5%)
["gemm", "fusedmul", "blas", "8"] 3.698 ms (5%)
["gemm", "fusedmul", "xf", "16"] 5.429 ms (5%) 160 bytes (1%) 6
["gemm", "fusedmul", "xf", "2"] 704.101 μs (5%) 160 bytes (1%) 6
["gemm", "fusedmul", "xf", "32"] 10.921 ms (5%) 160 bytes (1%) 6
["gemm", "fusedmul", "xf", "8"] 2.728 ms (5%) 160 bytes (1%) 6
["gemm", "mul", "linalg", "256"] 1.009 ms (5%)
["gemm", "mul", "linalg", "32"] 3.612 μs (5%)
["gemm", "mul", "linalg", "8"] 300.000 ns (5%)
["gemm", "mul", "man", "false", "256"] 4.440 ms (5%)
["gemm", "mul", "man", "false", "32"] 7.075 μs (5%)
["gemm", "mul", "man", "false", "8"] 520.419 ns (5%)
["gemm", "mul", "man", "ivdep", "256"] 4.421 ms (5%)
["gemm", "mul", "man", "ivdep", "32"] 6.320 μs (5%)
["gemm", "mul", "man", "ivdep", "8"] 514.211 ns (5%)
["gemm", "mul", "man", "true", "256"] 4.430 ms (5%)
["gemm", "mul", "man", "true", "32"] 6.980 μs (5%)
["gemm", "mul", "man", "true", "8"] 540.741 ns (5%)
["gemm", "mul", "xf", "false", "256"] 4.447 ms (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "false", "32"] 7.100 μs (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "false", "8"] 531.579 ns (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "ivdep", "256"] 4.410 ms (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "ivdep", "32"] 5.850 μs (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "ivdep", "8"] 522.513 ns (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "true", "256"] 4.444 ms (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "true", "32"] 6.960 μs (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "true", "8"] 528.947 ns (5%) 48 bytes (1%) 2
["groupby", "sum", "sac"] 295.400 μs (5%) 313.14 KiB (1%) 10007
["groupby", "sum", "xf-with-init"] 213.200 μs (5%) 157.44 KiB (1%) 10008
["groupby", "sum", "xf-without-init"] 210.900 μs (5%) 157.44 KiB (1%) 10008
["missing_argmax", "man"] 1.420 μs (5%) 32 bytes (1%) 1
["missing_argmax", "rf"] 2.944 μs (5%) 32 bytes (1%) 1
["missing_argmax", "xf"] 2.922 μs (5%) 32 bytes (1%) 1
["missing_dot", "equiv"] 1.460 μs (5%) 16 bytes (1%) 1
["missing_dot", "man"] 1.360 μs (5%) 16 bytes (1%) 1
["missing_dot", "naive"] 5.433 μs (5%) 16 bytes (1%) 1
["missing_dot", "rf"] 1.330 μs (5%) 16 bytes (1%) 1
["missing_dot", "rf_nota"] 1.430 μs (5%) 16 bytes (1%) 1
["missing_dot", "xf"] 254.200 μs (5%) 72.28 KiB (1%) 3749
["missing_dot", "xf_nota"] 251.800 μs (5%) 72.00 KiB (1%) 3735
["overhead", "foldl"] 5.600 ns (5%)
["overhead", "reduce_basecase"] 220.727 ns (5%) 416 bytes (1%) 7
["partition_by", "man"] 2.207 ms (5%) 352 bytes (1%) 4
["partition_by", "xf"] 3.316 ms (5%) 6.10 MiB (1%) 200007

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["cat"]
  • ["collect"]
  • ["dot"]
  • ["filter_map_map!"]
  • ["filter_map_reduce"]
  • ["findall"]
  • ["gemm", "fusedmul", "blas"]
  • ["gemm", "fusedmul", "xf"]
  • ["gemm", "mul", "linalg"]
  • ["gemm", "mul", "man", "false"]
  • ["gemm", "mul", "man", "ivdep"]
  • ["gemm", "mul", "man", "true"]
  • ["gemm", "mul", "xf", "false"]
  • ["gemm", "mul", "xf", "ivdep"]
  • ["gemm", "mul", "xf", "true"]
  • ["groupby", "sum"]
  • ["missing_argmax"]
  • ["missing_dot"]
  • ["overhead"]
  • ["partition_by"]

Julia versioninfo

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2394 MHz      27900 s          0 s       1398 s      33606 s          0 s
       #2  2394 MHz      31606 s          0 s       1254 s      29927 s          0 s
       
  Memory: 6.764884948730469 GB (3007.69140625 MB free)
  Uptime: 646.0 sec
  Load Avg:  1.0  0.94189453125  0.5751953125
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, haswell)

Baseline result

Benchmark Report for /home/runner/work/Transducers.jl/Transducers.jl

Job Properties

  • Time of benchmark: 29 Jun 2020 - 6:57
  • Package commit: 8ccb58
  • Julia commit: 44fa15
  • Julia command flags: None
  • Environment variables: OMP_NUM_THREADS => 1 JULIA_NUM_THREADS => 1

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["cat", "base"] 1.980 μs (5%)
["cat", "xf"] 2.000 μs (5%) 80 bytes (1%) 3
["collect", "filter-missing"] 124.300 μs (5%) 345.36 KiB (1%) 10018
["collect", "identity-float"] 99.300 μs (5%) 569.20 KiB (1%) 10018
["collect", "identity-union"] 360.201 μs (5%) 705.13 KiB (1%) 16665
["dot", "blas"] 2.333 μs (5%)
["dot", "man"] 2.311 μs (5%)
["dot", "rf"] 2.733 μs (5%)
["dot", "xf"] 2.733 μs (5%)
["filter_map_map!", "man"] 66.400 μs (5%)
["filter_map_map!", "xf"] 709.101 μs (5%) 304 bytes (1%) 17
["filter_map_reduce", "man"] 259.900 μs (5%)
["filter_map_reduce", "xf"] 259.900 μs (5%)
["findall", "base"] 1.029 ms (5%) 2.00 MiB (1%) 21
["findall", "xf-array"] 981.501 μs (5%) 3.05 MiB (1%) 99836
["findall", "xf-iter"] 3.857 ms (5%) 9.63 MiB (1%) 299928
["gemm", "fusedmul", "blas", "16"] 4.791 ms (5%)
["gemm", "fusedmul", "blas", "2"] 3.556 ms (5%)
["gemm", "fusedmul", "blas", "32"] 6.476 ms (5%)
["gemm", "fusedmul", "blas", "8"] 3.675 ms (5%)
["gemm", "fusedmul", "xf", "16"] 5.321 ms (5%) 160 bytes (1%) 6
["gemm", "fusedmul", "xf", "2"] 678.100 μs (5%) 160 bytes (1%) 6
["gemm", "fusedmul", "xf", "32"] 10.654 ms (5%) 160 bytes (1%) 6
["gemm", "fusedmul", "xf", "8"] 2.724 ms (5%) 160 bytes (1%) 6
["gemm", "mul", "linalg", "256"] 1.005 ms (5%)
["gemm", "mul", "linalg", "32"] 3.700 μs (5%)
["gemm", "mul", "linalg", "8"] 300.000 ns (5%)
["gemm", "mul", "man", "false", "256"] 4.445 ms (5%)
["gemm", "mul", "man", "false", "32"] 7.200 μs (5%)
["gemm", "mul", "man", "false", "8"] 400.000 ns (5%)
["gemm", "mul", "man", "ivdep", "256"] 4.410 ms (5%)
["gemm", "mul", "man", "ivdep", "32"] 6.300 μs (5%)
["gemm", "mul", "man", "ivdep", "8"] 400.000 ns (5%)
["gemm", "mul", "man", "true", "256"] 4.331 ms (5%)
["gemm", "mul", "man", "true", "32"] 7.200 μs (5%)
["gemm", "mul", "man", "true", "8"] 400.000 ns (5%)
["gemm", "mul", "xf", "false", "256"] 4.332 ms (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "false", "32"] 7.600 μs (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "false", "8"] 500.000 ns (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "ivdep", "256"] 4.317 ms (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "ivdep", "32"] 5.900 μs (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "ivdep", "8"] 400.000 ns (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "true", "256"] 4.333 ms (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "true", "32"] 7.400 μs (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "true", "8"] 400.000 ns (5%) 48 bytes (1%) 2
["groupby", "sum", "sac"] 282.800 μs (5%) 313.14 KiB (1%) 10007
["groupby", "sum", "xf-with-init"] 217.801 μs (5%) 157.44 KiB (1%) 10008
["groupby", "sum", "xf-without-init"] 211.300 μs (5%) 157.44 KiB (1%) 10008
["missing_argmax", "man"] 1.420 μs (5%) 32 bytes (1%) 1
["missing_argmax", "rf"] 2.900 μs (5%) 32 bytes (1%) 1
["missing_argmax", "xf"] 2.922 μs (5%) 32 bytes (1%) 1
["missing_dot", "equiv"] 1.460 μs (5%) 16 bytes (1%) 1
["missing_dot", "man"] 1.340 μs (5%) 16 bytes (1%) 1
["missing_dot", "naive"] 5.433 μs (5%) 16 bytes (1%) 1
["missing_dot", "rf"] 1.440 μs (5%) 16 bytes (1%) 1
["missing_dot", "rf_nota"] 1.520 μs (5%) 16 bytes (1%) 1
["missing_dot", "xf"] 237.900 μs (5%) 72.25 KiB (1%) 3745
["missing_dot", "xf_nota"] 235.200 μs (5%) 72.34 KiB (1%) 3753
["overhead", "foldl"] 5.600 ns (5%)
["overhead", "reduce_basecase"] 214.909 ns (5%) 416 bytes (1%) 7
["partition_by", "man"] 2.196 ms (5%) 352 bytes (1%) 4
["partition_by", "xf"] 3.338 ms (5%) 6.10 MiB (1%) 200007

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["cat"]
  • ["collect"]
  • ["dot"]
  • ["filter_map_map!"]
  • ["filter_map_reduce"]
  • ["findall"]
  • ["gemm", "fusedmul", "blas"]
  • ["gemm", "fusedmul", "xf"]
  • ["gemm", "mul", "linalg"]
  • ["gemm", "mul", "man", "false"]
  • ["gemm", "mul", "man", "ivdep"]
  • ["gemm", "mul", "man", "true"]
  • ["gemm", "mul", "xf", "false"]
  • ["gemm", "mul", "xf", "ivdep"]
  • ["gemm", "mul", "xf", "true"]
  • ["groupby", "sum"]
  • ["missing_argmax"]
  • ["missing_dot"]
  • ["overhead"]
  • ["partition_by"]

Julia versioninfo

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2394 MHz      44190 s          0 s       1530 s      41828 s          0 s
       #2  2394 MHz      39976 s          0 s       1366 s      46126 s          0 s
       
  Memory: 6.764884948730469 GB (2963.9140625 MB free)
  Uptime: 893.0 sec
  Load Avg:  1.009765625  1.0  0.69189453125
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, haswell)

Runtime information

Runtime Info
BLAS #threads 2
BLAS.vendor() openblas64
Sys.CPU_THREADS 2

lscpu output:

Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              2
On-line CPU(s) list: 0,1
Thread(s) per core:  1
Core(s) per socket:  2
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               63
Model name:          Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz
Stepping:            2
CPU MHz:             2394.456
BogoMIPS:            4788.91
Hypervisor vendor:   Microsoft
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            30720K
NUMA node0 CPU(s):   0,1
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single pti fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt md_clear
Cpu Property Value
Brand Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz
Vendor :Intel
Architecture :Haswell
Model Family: 0x06, Model: 0x3f, Stepping: 0x02, Type: 0x00
Cores 2 physical cores, 2 logical cores (on executing CPU)
No Hyperthreading detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 256, 30720) kbytes
64 byte cache line size
Address Size 48 bits virtual, 44 bits physical
SIMD 256 bit = 32 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC increased at every clock cycle (non-invariant TSC)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft

@github-actions
Copy link
Contributor

Multi-thread benchmark result

Judge result

Benchmark Report for /home/runner/work/Transducers.jl/Transducers.jl

Job Properties

  • Time of benchmarks:
    • Target: 29 Jun 2020 - 06:54
    • Baseline: 29 Jun 2020 - 06:58
  • Package commits:
    • Target: fa428b
    • Baseline: 8ccb58
  • Julia commits:
    • Target: 44fa15
    • Baseline: 44fa15
  • Julia command flags:
    • Target: None
    • Baseline: None
  • Environment variables:
    • Target: JULIA_NUM_THREADS => 2
    • Baseline: JULIA_NUM_THREADS => 2

Results

A ratio greater than 1.0 denotes a possible regression (marked with ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID time ratio memory ratio
["collect", "assoc", "basesize=1"] 1.07 (5%) ❌ 1.00 (1%)
["collect", "unordered", "basesize=1024"] 0.85 (5%) ✅ 0.89 (1%) ✅
["findfirst", "n=1000", "foldl"] 1.11 (5%) ❌ 1.00 (1%)
["findfirst", "n=1000", "reduce", "basesize=128"] 1.14 (5%) ❌ 1.00 (1%)
["findfirst", "n=1000", "reduce", "basesize=256"] 1.17 (5%) ❌ 1.00 (1%)
["findfirst", "n=1000", "reduce", "basesize=512"] 1.18 (5%) ❌ 1.00 (1%)
["findfirst", "n=400", "foldl"] 1.09 (5%) ❌ 1.00 (1%)
["findfirst", "n=400", "reduce", "basesize=128"] 1.13 (5%) ❌ 1.00 (1%)
["findfirst", "n=400", "reduce", "basesize=256"] 1.16 (5%) ❌ 1.00 (1%)
["findfirst", "n=400", "reduce", "basesize=512"] 1.13 (5%) ❌ 1.00 (1%)
["findfirst", "n=500", "foldl"] 1.15 (5%) ❌ 1.00 (1%)
["findfirst", "n=500", "reduce", "basesize=128"] 1.15 (5%) ❌ 1.00 (1%)
["findfirst", "n=500", "reduce", "basesize=256"] 1.10 (5%) ❌ 1.00 (1%)
["findfirst", "n=500", "reduce", "basesize=512"] 1.16 (5%) ❌ 1.00 (1%)
["parallel_histogram", "assoc", "basesize=4096"] 0.99 (5%) 0.87 (1%) ✅
["sum", "random", "reduce", "basesize=512"] 1.06 (5%) ❌ 1.00 (1%)
["sum", "uniform", "foldl"] 1.05 (5%) ❌ 1.00 (1%)
["words", "nthreads=2"] 1.09 (5%) ❌ 1.00 (1%)
["words", "nthreads=4"] 1.06 (5%) ❌ 0.99 (1%)

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["collect", "assoc"]
  • ["collect"]
  • ["collect", "unordered"]
  • ["findfirst", "n=1000"]
  • ["findfirst", "n=1000", "reduce"]
  • ["findfirst", "n=400"]
  • ["findfirst", "n=400", "reduce"]
  • ["findfirst", "n=500"]
  • ["findfirst", "n=500", "reduce"]
  • ["overhead"]
  • ["parallel_histogram", "assoc"]
  • ["parallel_histogram", "comm"]
  • ["parallel_histogram"]
  • ["sum", "random"]
  • ["sum", "random", "reduce"]
  • ["sum", "uniform"]
  • ["sum", "uniform", "reduce"]
  • ["sum", "valley"]
  • ["sum", "valley", "reduce"]
  • ["words"]

Julia versioninfo

Target

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2095 MHz      49191 s          0 s       2162 s      14351 s          0 s
       #2  2095 MHz      46087 s          0 s       2294 s      17295 s          0 s
       
  Memory: 6.764884948730469 GB (3120.95703125 MB free)
  Uptime: 676.0 sec
  Load Avg:  1.66455078125  1.4921875  0.8857421875
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, skylake)

Baseline

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2095 MHz      68504 s          0 s       2684 s      22022 s          0 s
       #2  2095 MHz      70038 s          0 s       2767 s      20472 s          0 s
       
  Memory: 6.764884948730469 GB (3106.89453125 MB free)
  Uptime: 954.0 sec
  Load Avg:  1.853515625  1.6142578125  1.0927734375
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, skylake)

Target result

Benchmark Report for /home/runner/work/Transducers.jl/Transducers.jl

Job Properties

  • Time of benchmark: 29 Jun 2020 - 6:54
  • Package commit: fa428b
  • Julia commit: 44fa15
  • Julia command flags: None
  • Environment variables: JULIA_NUM_THREADS => 2

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["collect", "assoc", "basesize=1"] 312.904 ms (5%) 12.424 ms 87.55 MiB (1%) 1590743
["collect", "assoc", "basesize=1024"] 177.910 ms (5%) 1.84 MiB (1%) 1812
["collect", "assoc", "basesize=32"] 191.136 ms (5%) 5.64 MiB (1%) 54014
["collect", "seq"] 361.850 ms (5%) 1.50 MiB (1%) 32787
["collect", "unordered", "basesize=1"] 392.375 ms (5%) 29.13 MiB (1%) 401468
["collect", "unordered", "basesize=1024"] 241.407 ms (5%) 775.80 KiB (1%) 2698
["collect", "unordered", "basesize=32"] 204.941 ms (5%) 1.46 MiB (1%) 15966
["findfirst", "n=1000", "foldl"] 644.256 ms (5%)
["findfirst", "n=1000", "reduce", "basesize=128"] 335.463 ms (5%) 563.70 KiB (1%) 10208
["findfirst", "n=1000", "reduce", "basesize=256"] 336.255 ms (5%) 287.11 KiB (1%) 5217
["findfirst", "n=1000", "reduce", "basesize=512"] 342.855 ms (5%) 149.22 KiB (1%) 2719
["findfirst", "n=400", "foldl"] 472.172 ms (5%)
["findfirst", "n=400", "reduce", "basesize=128"] 252.632 ms (5%) 1.02 MiB (1%) 18913
["findfirst", "n=400", "reduce", "basesize=256"] 252.602 ms (5%) 525.91 KiB (1%) 9558
["findfirst", "n=400", "reduce", "basesize=512"] 247.512 ms (5%) 267.05 KiB (1%) 4868
["findfirst", "n=500", "foldl"] 81.863 ms (5%)
["findfirst", "n=500", "reduce", "basesize=128"] 41.674 ms (5%) 157.19 KiB (1%) 2841
["findfirst", "n=500", "reduce", "basesize=256"] 39.793 ms (5%) 84.42 KiB (1%) 1529
["findfirst", "n=500", "reduce", "basesize=512"] 44.912 ms (5%) 48.17 KiB (1%) 874
["overhead", "default"] 154.700 μs (5%) 146.14 KiB (1%) 2628
["overhead", "stoppable=false"] 155.600 μs (5%) 146.16 KiB (1%) 2629
["overhead", "stoppable=true"] 249.500 μs (5%) 146.41 KiB (1%) 2645
["parallel_histogram", "assoc", "basesize=16384"] 3.693 ms (5%) 732.02 KiB (1%) 101
["parallel_histogram", "assoc", "basesize=4096"] 4.203 ms (5%) 1.80 MiB (1%) 495
["parallel_histogram", "assoc", "basesize=8192"] 3.945 ms (5%) 1.43 MiB (1%) 240
["parallel_histogram", "comm", "basesize=16384"] 14.197 ms (5%) 1.22 MiB (1%) 160
["parallel_histogram", "comm", "basesize=4096"] 22.732 ms (5%) 1.06 MiB (1%) 5493
["parallel_histogram", "comm", "basesize=8192"] 18.579 ms (5%) 1.27 MiB (1%) 3349
["parallel_histogram", "seq"] 6.767 ms (5%) 364.64 KiB (1%) 26
["sum", "random", "foldl"] 13.783 ms (5%)
["sum", "random", "reduce", "basesize=128"] 7.226 ms (5%) 313.33 KiB (1%) 6067
["sum", "random", "reduce", "basesize=256"] 7.055 ms (5%) 155.09 KiB (1%) 3011
["sum", "random", "reduce", "basesize=512"] 7.269 ms (5%) 76.27 KiB (1%) 1485
["sum", "uniform", "foldl"] 13.587 ms (5%)
["sum", "uniform", "reduce", "basesize=128"] 6.802 ms (5%) 313.36 KiB (1%) 6069
["sum", "uniform", "reduce", "basesize=256"] 6.660 ms (5%) 155.09 KiB (1%) 3011
["sum", "uniform", "reduce", "basesize=512"] 6.561 ms (5%) 76.25 KiB (1%) 1484
["sum", "valley", "foldl"] 13.373 ms (5%)
["sum", "valley", "reduce", "basesize=128"] 7.071 ms (5%) 313.31 KiB (1%) 6066
["sum", "valley", "reduce", "basesize=256"] 6.866 ms (5%) 155.08 KiB (1%) 3010
["sum", "valley", "reduce", "basesize=512"] 6.775 ms (5%) 76.25 KiB (1%) 1484
["words", "nthreads=1"] 30.796 ms (5%) 6.016 ms 64.30 MiB (1%) 2080957
["words", "nthreads=2"] 17.405 ms (5%) 65.02 MiB (1%) 2081110
["words", "nthreads=4"] 18.157 ms (5%) 65.47 MiB (1%) 2081258

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["collect", "assoc"]
  • ["collect"]
  • ["collect", "unordered"]
  • ["findfirst", "n=1000"]
  • ["findfirst", "n=1000", "reduce"]
  • ["findfirst", "n=400"]
  • ["findfirst", "n=400", "reduce"]
  • ["findfirst", "n=500"]
  • ["findfirst", "n=500", "reduce"]
  • ["overhead"]
  • ["parallel_histogram", "assoc"]
  • ["parallel_histogram", "comm"]
  • ["parallel_histogram"]
  • ["sum", "random"]
  • ["sum", "random", "reduce"]
  • ["sum", "uniform"]
  • ["sum", "uniform", "reduce"]
  • ["sum", "valley"]
  • ["sum", "valley", "reduce"]
  • ["words"]

Julia versioninfo

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2095 MHz      49191 s          0 s       2162 s      14351 s          0 s
       #2  2095 MHz      46087 s          0 s       2294 s      17295 s          0 s
       
  Memory: 6.764884948730469 GB (3120.95703125 MB free)
  Uptime: 676.0 sec
  Load Avg:  1.66455078125  1.4921875  0.8857421875
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, skylake)

Baseline result

Benchmark Report for /home/runner/work/Transducers.jl/Transducers.jl

Job Properties

  • Time of benchmark: 29 Jun 2020 - 6:58
  • Package commit: 8ccb58
  • Julia commit: 44fa15
  • Julia command flags: None
  • Environment variables: JULIA_NUM_THREADS => 2

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["collect", "assoc", "basesize=1"] 293.561 ms (5%) 9.869 ms 87.55 MiB (1%) 1590789
["collect", "assoc", "basesize=1024"] 185.454 ms (5%) 1.84 MiB (1%) 1812
["collect", "assoc", "basesize=32"] 183.095 ms (5%) 5.64 MiB (1%) 54011
["collect", "seq"] 379.519 ms (5%) 1.50 MiB (1%) 32787
["collect", "unordered", "basesize=1"] 395.837 ms (5%) 15.675 ms 29.13 MiB (1%) 401441
["collect", "unordered", "basesize=1024"] 283.137 ms (5%) 874.89 KiB (1%) 9085
["collect", "unordered", "basesize=32"] 206.543 ms (5%) 1.46 MiB (1%) 16167
["findfirst", "n=1000", "foldl"] 582.078 ms (5%)
["findfirst", "n=1000", "reduce", "basesize=128"] 294.033 ms (5%) 563.53 KiB (1%) 10197
["findfirst", "n=1000", "reduce", "basesize=256"] 288.167 ms (5%) 287.02 KiB (1%) 5211
["findfirst", "n=1000", "reduce", "basesize=512"] 290.854 ms (5%) 149.17 KiB (1%) 2716
["findfirst", "n=400", "foldl"] 432.385 ms (5%)
["findfirst", "n=400", "reduce", "basesize=128"] 224.138 ms (5%) 1.02 MiB (1%) 18914
["findfirst", "n=400", "reduce", "basesize=256"] 217.213 ms (5%) 525.86 KiB (1%) 9555
["findfirst", "n=400", "reduce", "basesize=512"] 218.759 ms (5%) 267.06 KiB (1%) 4869
["findfirst", "n=500", "foldl"] 71.382 ms (5%)
["findfirst", "n=500", "reduce", "basesize=128"] 36.188 ms (5%) 157.13 KiB (1%) 2837
["findfirst", "n=500", "reduce", "basesize=256"] 36.192 ms (5%) 84.44 KiB (1%) 1530
["findfirst", "n=500", "reduce", "basesize=512"] 38.648 ms (5%) 48.16 KiB (1%) 873
["overhead", "default"] 151.700 μs (5%) 146.14 KiB (1%) 2628
["overhead", "stoppable=false"] 151.200 μs (5%) 146.16 KiB (1%) 2629
["overhead", "stoppable=true"] 239.301 μs (5%) 146.41 KiB (1%) 2645
["parallel_histogram", "assoc", "basesize=16384"] 3.698 ms (5%) 732.02 KiB (1%) 101
["parallel_histogram", "assoc", "basesize=4096"] 4.249 ms (5%) 2.07 MiB (1%) 501
["parallel_histogram", "assoc", "basesize=8192"] 3.947 ms (5%) 1.43 MiB (1%) 240
["parallel_histogram", "comm", "basesize=16384"] 13.823 ms (5%) 1.22 MiB (1%) 160
["parallel_histogram", "comm", "basesize=4096"] 22.320 ms (5%) 1.06 MiB (1%) 3362
["parallel_histogram", "comm", "basesize=8192"] 18.598 ms (5%) 1.27 MiB (1%) 3455
["parallel_histogram", "seq"] 6.699 ms (5%) 364.64 KiB (1%) 26
["sum", "random", "foldl"] 13.525 ms (5%)
["sum", "random", "reduce", "basesize=128"] 7.114 ms (5%) 313.34 KiB (1%) 6068
["sum", "random", "reduce", "basesize=256"] 6.906 ms (5%) 155.09 KiB (1%) 3011
["sum", "random", "reduce", "basesize=512"] 6.833 ms (5%) 76.27 KiB (1%) 1485
["sum", "uniform", "foldl"] 12.906 ms (5%)
["sum", "uniform", "reduce", "basesize=128"] 6.874 ms (5%) 313.36 KiB (1%) 6069
["sum", "uniform", "reduce", "basesize=256"] 6.649 ms (5%) 155.08 KiB (1%) 3010
["sum", "uniform", "reduce", "basesize=512"] 6.550 ms (5%) 76.25 KiB (1%) 1484
["sum", "valley", "foldl"] 13.615 ms (5%)
["sum", "valley", "reduce", "basesize=128"] 7.072 ms (5%) 313.31 KiB (1%) 6066
["sum", "valley", "reduce", "basesize=256"] 6.918 ms (5%) 155.09 KiB (1%) 3011
["sum", "valley", "reduce", "basesize=512"] 6.806 ms (5%) 76.27 KiB (1%) 1485
["words", "nthreads=1"] 29.938 ms (5%) 5.644 ms 64.90 MiB (1%) 2100326
["words", "nthreads=2"] 15.913 ms (5%) 65.26 MiB (1%) 2100402
["words", "nthreads=4"] 17.132 ms (5%) 65.98 MiB (1%) 2100557

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["collect", "assoc"]
  • ["collect"]
  • ["collect", "unordered"]
  • ["findfirst", "n=1000"]
  • ["findfirst", "n=1000", "reduce"]
  • ["findfirst", "n=400"]
  • ["findfirst", "n=400", "reduce"]
  • ["findfirst", "n=500"]
  • ["findfirst", "n=500", "reduce"]
  • ["overhead"]
  • ["parallel_histogram", "assoc"]
  • ["parallel_histogram", "comm"]
  • ["parallel_histogram"]
  • ["sum", "random"]
  • ["sum", "random", "reduce"]
  • ["sum", "uniform"]
  • ["sum", "uniform", "reduce"]
  • ["sum", "valley"]
  • ["sum", "valley", "reduce"]
  • ["words"]

Julia versioninfo

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2095 MHz      68504 s          0 s       2684 s      22022 s          0 s
       #2  2095 MHz      70038 s          0 s       2767 s      20472 s          0 s
       
  Memory: 6.764884948730469 GB (3106.89453125 MB free)
  Uptime: 954.0 sec
  Load Avg:  1.853515625  1.6142578125  1.0927734375
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, skylake)

Runtime information

Runtime Info
BLAS #threads 2
BLAS.vendor() openblas64
Sys.CPU_THREADS 2

lscpu output:

Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              2
On-line CPU(s) list: 0,1
Thread(s) per core:  1
Core(s) per socket:  2
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               85
Model name:          Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz
Stepping:            4
CPU MHz:             2095.074
BogoMIPS:            4190.14
Hypervisor vendor:   Microsoft
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            1024K
L3 cache:            36608K
NUMA node0 CPU(s):   0,1
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt avx512cd avx512bw avx512vl xsaveopt xsavec xsaves
Cpu Property Value
Brand Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz
Vendor :Intel
Architecture :Skylake
Model Family: 0x06, Model: 0x55, Stepping: 0x04, Type: 0x00
Cores 2 physical cores, 2 logical cores (on executing CPU)
No Hyperthreading detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 1024, 36608) kbytes
64 byte cache line size
Address Size 48 bits virtual, 44 bits physical
SIMD 512 bit = 64 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC increased at every clock cycle (non-invariant TSC)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft

@github-actions
Copy link
Contributor

Benchmark result

Judge result

Benchmark Report for /home/runner/work/Transducers.jl/Transducers.jl

Job Properties

  • Time of benchmarks:
    • Target: 29 Jun 2020 - 07:43
    • Baseline: 29 Jun 2020 - 07:48
  • Package commits:
    • Target: 02009d
    • Baseline: 8ccb58
  • Julia commits:
    • Target: 44fa15
    • Baseline: 44fa15
  • Julia command flags:
    • Target: None
    • Baseline: None
  • Environment variables:
    • Target: OMP_NUM_THREADS => 1 JULIA_NUM_THREADS => 1
    • Baseline: OMP_NUM_THREADS => 1 JULIA_NUM_THREADS => 1

Results

A ratio greater than 1.0 denotes a possible regression (marked with ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID time ratio memory ratio
["findall", "xf-array"] 0.98 (5%) 0.98 (1%) ✅
["gemm", "fusedmul", "blas", "16"] 1.05 (5%) ❌ 1.00 (1%)
["gemm", "mul", "linalg", "8"] 1.11 (5%) ❌ 1.00 (1%)
["gemm", "mul", "man", "false", "32"] 0.95 (5%) ✅ 1.00 (1%)
["gemm", "mul", "xf", "false", "8"] 0.93 (5%) ✅ 1.00 (1%)
["gemm", "mul", "xf", "true", "8"] 1.14 (5%) ❌ 1.00 (1%)
["groupby", "sum", "sac"] 0.95 (5%) ✅ 1.00 (1%)
["groupby", "sum", "xf-with-init"] 0.94 (5%) ✅ 1.00 (1%)
["groupby", "sum", "xf-without-init"] 0.95 (5%) ✅ 1.00 (1%)
["missing_argmax", "rf"] 1.05 (5%) ❌ 1.00 (1%)
["missing_argmax", "xf"] 1.07 (5%) ❌ 1.00 (1%)
["missing_dot", "man"] 0.89 (5%) ✅ 1.00 (1%)
["missing_dot", "naive"] 1.08 (5%) ❌ 1.00 (1%)
["missing_dot", "rf"] 1.06 (5%) ❌ 1.00 (1%)
["missing_dot", "rf_nota"] 1.15 (5%) ❌ 1.00 (1%)
["overhead", "foldl"] 1.08 (5%) ❌ 1.00 (1%)

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["cat"]
  • ["collect"]
  • ["dot"]
  • ["filter_map_map!"]
  • ["filter_map_reduce"]
  • ["findall"]
  • ["gemm", "fusedmul", "blas"]
  • ["gemm", "fusedmul", "xf"]
  • ["gemm", "mul", "linalg"]
  • ["gemm", "mul", "man", "false"]
  • ["gemm", "mul", "man", "ivdep"]
  • ["gemm", "mul", "man", "true"]
  • ["gemm", "mul", "xf", "false"]
  • ["gemm", "mul", "xf", "ivdep"]
  • ["gemm", "mul", "xf", "true"]
  • ["groupby", "sum"]
  • ["missing_argmax"]
  • ["missing_dot"]
  • ["overhead"]
  • ["partition_by"]

Julia versioninfo

Target

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz      10760 s          0 s       1302 s      54843 s          0 s
       #2  2294 MHz      52963 s          0 s       1820 s      12493 s          0 s
       
  Memory: 6.764884948730469 GB (2890.3203125 MB free)
  Uptime: 689.0 sec
  Load Avg:  1.0087890625  1.0  0.638671875
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, broadwell)

Baseline

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz      14981 s          0 s       1485 s      76748 s          0 s
       #2  2294 MHz      75092 s          0 s       1922 s      16581 s          0 s
       
  Memory: 6.764884948730469 GB (2932.828125 MB free)
  Uptime: 953.0 sec
  Load Avg:  1.09375  1.046875  0.75634765625
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, broadwell)

Target result

Benchmark Report for /home/runner/work/Transducers.jl/Transducers.jl

Job Properties

  • Time of benchmark: 29 Jun 2020 - 7:43
  • Package commit: 02009d
  • Julia commit: 44fa15
  • Julia command flags: None
  • Environment variables: OMP_NUM_THREADS => 1 JULIA_NUM_THREADS => 1

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["cat", "base"] 1.670 μs (5%)
["cat", "xf"] 1.860 μs (5%) 80 bytes (1%) 3
["collect", "filter-missing"] 119.301 μs (5%) 345.36 KiB (1%) 10018
["collect", "identity-float"] 103.301 μs (5%) 569.20 KiB (1%) 10018
["collect", "identity-union"] 342.103 μs (5%) 705.36 KiB (1%) 16675
["dot", "blas"] 2.633 μs (5%)
["dot", "man"] 2.611 μs (5%)
["dot", "rf"] 3.100 μs (5%)
["dot", "xf"] 3.100 μs (5%)
["filter_map_map!", "man"] 74.401 μs (5%)
["filter_map_map!", "xf"] 638.003 μs (5%) 304 bytes (1%) 17
["filter_map_reduce", "man"] 226.401 μs (5%)
["filter_map_reduce", "xf"] 226.401 μs (5%)
["findall", "base"] 954.108 μs (5%) 2.00 MiB (1%) 21
["findall", "xf-array"] 901.808 μs (5%) 2.98 MiB (1%) 97440
["findall", "xf-iter"] 3.748 ms (5%) 9.63 MiB (1%) 299929
["gemm", "fusedmul", "blas", "16"] 6.115 ms (5%)
["gemm", "fusedmul", "blas", "2"] 4.051 ms (5%)
["gemm", "fusedmul", "blas", "32"] 9.612 ms (5%)
["gemm", "fusedmul", "blas", "8"] 4.407 ms (5%)
["gemm", "fusedmul", "xf", "16"] 5.472 ms (5%) 160 bytes (1%) 6
["gemm", "fusedmul", "xf", "2"] 674.203 μs (5%) 160 bytes (1%) 6
["gemm", "fusedmul", "xf", "32"] 10.949 ms (5%) 160 bytes (1%) 6
["gemm", "fusedmul", "xf", "8"] 2.685 ms (5%) 160 bytes (1%) 6
["gemm", "mul", "linalg", "256"] 1.404 ms (5%)
["gemm", "mul", "linalg", "32"] 4.329 μs (5%)
["gemm", "mul", "linalg", "8"] 333.032 ns (5%)
["gemm", "mul", "man", "false", "256"] 4.741 ms (5%)
["gemm", "mul", "man", "false", "32"] 7.575 μs (5%)
["gemm", "mul", "man", "false", "8"] 418.279 ns (5%)
["gemm", "mul", "man", "ivdep", "256"] 4.716 ms (5%)
["gemm", "mul", "man", "ivdep", "32"] 7.040 μs (5%)
["gemm", "mul", "man", "ivdep", "8"] 407.071 ns (5%)
["gemm", "mul", "man", "true", "256"] 4.721 ms (5%)
["gemm", "mul", "man", "true", "32"] 7.950 μs (5%)
["gemm", "mul", "man", "true", "8"] 395.505 ns (5%)
["gemm", "mul", "xf", "false", "256"] 4.780 ms (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "false", "32"] 8.050 μs (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "false", "8"] 463.407 ns (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "ivdep", "256"] 4.694 ms (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "ivdep", "32"] 6.600 μs (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "ivdep", "8"] 407.619 ns (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "true", "256"] 4.788 ms (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "true", "32"] 7.800 μs (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "true", "8"] 457.291 ns (5%) 48 bytes (1%) 2
["groupby", "sum", "sac"] 247.302 μs (5%) 313.14 KiB (1%) 10007
["groupby", "sum", "xf-with-init"] 189.900 μs (5%) 157.44 KiB (1%) 10008
["groupby", "sum", "xf-without-init"] 189.501 μs (5%) 157.44 KiB (1%) 10008
["missing_argmax", "man"] 1.130 μs (5%) 32 bytes (1%) 1
["missing_argmax", "rf"] 2.678 μs (5%) 32 bytes (1%) 1
["missing_argmax", "xf"] 2.567 μs (5%) 32 bytes (1%) 1
["missing_dot", "equiv"] 1.360 μs (5%) 16 bytes (1%) 1
["missing_dot", "man"] 1.220 μs (5%) 16 bytes (1%) 1
["missing_dot", "naive"] 5.086 μs (5%) 16 bytes (1%) 1
["missing_dot", "rf"] 1.330 μs (5%) 16 bytes (1%) 1
["missing_dot", "rf_nota"] 1.460 μs (5%) 16 bytes (1%) 1
["missing_dot", "xf"] 224.701 μs (5%) 72.05 KiB (1%) 3739
["missing_dot", "xf_nota"] 227.601 μs (5%) 72.19 KiB (1%) 3745
["overhead", "foldl"] 5.400 ns (5%)
["overhead", "reduce_basecase"] 207.047 ns (5%) 416 bytes (1%) 7
["partition_by", "man"] 2.005 ms (5%) 352 bytes (1%) 4
["partition_by", "xf"] 3.261 ms (5%) 6.10 MiB (1%) 200007

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["cat"]
  • ["collect"]
  • ["dot"]
  • ["filter_map_map!"]
  • ["filter_map_reduce"]
  • ["findall"]
  • ["gemm", "fusedmul", "blas"]
  • ["gemm", "fusedmul", "xf"]
  • ["gemm", "mul", "linalg"]
  • ["gemm", "mul", "man", "false"]
  • ["gemm", "mul", "man", "ivdep"]
  • ["gemm", "mul", "man", "true"]
  • ["gemm", "mul", "xf", "false"]
  • ["gemm", "mul", "xf", "ivdep"]
  • ["gemm", "mul", "xf", "true"]
  • ["groupby", "sum"]
  • ["missing_argmax"]
  • ["missing_dot"]
  • ["overhead"]
  • ["partition_by"]

Julia versioninfo

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz      10760 s          0 s       1302 s      54843 s          0 s
       #2  2294 MHz      52963 s          0 s       1820 s      12493 s          0 s
       
  Memory: 6.764884948730469 GB (2890.3203125 MB free)
  Uptime: 689.0 sec
  Load Avg:  1.0087890625  1.0  0.638671875
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, broadwell)

Baseline result

Benchmark Report for /home/runner/work/Transducers.jl/Transducers.jl

Job Properties

  • Time of benchmark: 29 Jun 2020 - 7:48
  • Package commit: 8ccb58
  • Julia commit: 44fa15
  • Julia command flags: None
  • Environment variables: OMP_NUM_THREADS => 1 JULIA_NUM_THREADS => 1

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["cat", "base"] 1.690 μs (5%)
["cat", "xf"] 1.900 μs (5%) 80 bytes (1%) 3
["collect", "filter-missing"] 117.801 μs (5%) 345.36 KiB (1%) 10018
["collect", "identity-float"] 105.201 μs (5%) 569.20 KiB (1%) 10018
["collect", "identity-union"] 342.401 μs (5%) 705.47 KiB (1%) 16687
["dot", "blas"] 2.622 μs (5%)
["dot", "man"] 2.600 μs (5%)
["dot", "rf"] 3.087 μs (5%)
["dot", "xf"] 3.087 μs (5%)
["filter_map_map!", "man"] 72.900 μs (5%)
["filter_map_map!", "xf"] 644.702 μs (5%) 304 bytes (1%) 17
["filter_map_reduce", "man"] 226.400 μs (5%)
["filter_map_reduce", "xf"] 219.301 μs (5%)
["findall", "base"] 983.604 μs (5%) 2.00 MiB (1%) 21
["findall", "xf-array"] 922.204 μs (5%) 3.04 MiB (1%) 99512
["findall", "xf-iter"] 3.748 ms (5%) 9.63 MiB (1%) 299931
["gemm", "fusedmul", "blas", "16"] 5.798 ms (5%)
["gemm", "fusedmul", "blas", "2"] 4.105 ms (5%)
["gemm", "fusedmul", "blas", "32"] 9.691 ms (5%)
["gemm", "fusedmul", "blas", "8"] 4.549 ms (5%)
["gemm", "fusedmul", "xf", "16"] 5.652 ms (5%) 160 bytes (1%) 6
["gemm", "fusedmul", "xf", "2"] 671.302 μs (5%) 160 bytes (1%) 6
["gemm", "fusedmul", "xf", "32"] 11.023 ms (5%) 160 bytes (1%) 6
["gemm", "fusedmul", "xf", "8"] 2.697 ms (5%) 160 bytes (1%) 6
["gemm", "mul", "linalg", "256"] 1.400 ms (5%)
["gemm", "mul", "linalg", "32"] 4.400 μs (5%)
["gemm", "mul", "linalg", "8"] 300.000 ns (5%)
["gemm", "mul", "man", "false", "256"] 4.755 ms (5%)
["gemm", "mul", "man", "false", "32"] 8.000 μs (5%)
["gemm", "mul", "man", "false", "8"] 400.000 ns (5%)
["gemm", "mul", "man", "ivdep", "256"] 4.718 ms (5%)
["gemm", "mul", "man", "ivdep", "32"] 7.100 μs (5%)
["gemm", "mul", "man", "ivdep", "8"] 400.000 ns (5%)
["gemm", "mul", "man", "true", "256"] 4.718 ms (5%)
["gemm", "mul", "man", "true", "32"] 7.700 μs (5%)
["gemm", "mul", "man", "true", "8"] 400.000 ns (5%)
["gemm", "mul", "xf", "false", "256"] 4.758 ms (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "false", "32"] 8.100 μs (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "false", "8"] 500.000 ns (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "ivdep", "256"] 4.712 ms (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "ivdep", "32"] 6.300 μs (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "ivdep", "8"] 400.000 ns (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "true", "256"] 4.747 ms (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "true", "32"] 7.900 μs (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "true", "8"] 400.000 ns (5%) 48 bytes (1%) 2
["groupby", "sum", "sac"] 260.501 μs (5%) 313.14 KiB (1%) 10007
["groupby", "sum", "xf-with-init"] 202.701 μs (5%) 157.44 KiB (1%) 10008
["groupby", "sum", "xf-without-init"] 200.101 μs (5%) 157.44 KiB (1%) 10008
["missing_argmax", "man"] 1.140 μs (5%) 32 bytes (1%) 1
["missing_argmax", "rf"] 2.544 μs (5%) 32 bytes (1%) 1
["missing_argmax", "xf"] 2.400 μs (5%) 32 bytes (1%) 1
["missing_dot", "equiv"] 1.300 μs (5%) 16 bytes (1%) 1
["missing_dot", "man"] 1.370 μs (5%) 16 bytes (1%) 1
["missing_dot", "naive"] 4.714 μs (5%) 16 bytes (1%) 1
["missing_dot", "rf"] 1.260 μs (5%) 16 bytes (1%) 1
["missing_dot", "rf_nota"] 1.270 μs (5%) 16 bytes (1%) 1
["missing_dot", "xf"] 220.201 μs (5%) 71.94 KiB (1%) 3733
["missing_dot", "xf_nota"] 231.101 μs (5%) 71.88 KiB (1%) 3731
["overhead", "foldl"] 5.000 ns (5%)
["overhead", "reduce_basecase"] 210.763 ns (5%) 416 bytes (1%) 7
["partition_by", "man"] 1.978 ms (5%) 352 bytes (1%) 4
["partition_by", "xf"] 3.395 ms (5%) 6.10 MiB (1%) 200007

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["cat"]
  • ["collect"]
  • ["dot"]
  • ["filter_map_map!"]
  • ["filter_map_reduce"]
  • ["findall"]
  • ["gemm", "fusedmul", "blas"]
  • ["gemm", "fusedmul", "xf"]
  • ["gemm", "mul", "linalg"]
  • ["gemm", "mul", "man", "false"]
  • ["gemm", "mul", "man", "ivdep"]
  • ["gemm", "mul", "man", "true"]
  • ["gemm", "mul", "xf", "false"]
  • ["gemm", "mul", "xf", "ivdep"]
  • ["gemm", "mul", "xf", "true"]
  • ["groupby", "sum"]
  • ["missing_argmax"]
  • ["missing_dot"]
  • ["overhead"]
  • ["partition_by"]

Julia versioninfo

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz      14981 s          0 s       1485 s      76748 s          0 s
       #2  2294 MHz      75092 s          0 s       1922 s      16581 s          0 s
       
  Memory: 6.764884948730469 GB (2932.828125 MB free)
  Uptime: 953.0 sec
  Load Avg:  1.09375  1.046875  0.75634765625
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, broadwell)

Runtime information

Runtime Info
BLAS #threads 2
BLAS.vendor() openblas64
Sys.CPU_THREADS 2

lscpu output:

Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              2
On-line CPU(s) list: 0,1
Thread(s) per core:  1
Core(s) per socket:  2
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               79
Model name:          Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
Stepping:            1
CPU MHz:             2294.689
BogoMIPS:            4589.37
Hypervisor vendor:   Microsoft
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            51200K
NUMA node0 CPU(s):   0,1
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt md_clear
Cpu Property Value
Brand Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
Vendor :Intel
Architecture :Broadwell
Model Family: 0x06, Model: 0x4f, Stepping: 0x01, Type: 0x00
Cores 2 physical cores, 2 logical cores (on executing CPU)
No Hyperthreading detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 256, 51200) kbytes
64 byte cache line size
Address Size 48 bits virtual, 44 bits physical
SIMD 256 bit = 32 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC increased at every clock cycle (non-invariant TSC)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft

@github-actions
Copy link
Contributor

Multi-thread benchmark result

Judge result

Benchmark Report for /home/runner/work/Transducers.jl/Transducers.jl

Job Properties

  • Time of benchmarks:
    • Target: 29 Jun 2020 - 07:44
    • Baseline: 29 Jun 2020 - 07:49
  • Package commits:
    • Target: 02009d
    • Baseline: 8ccb58
  • Julia commits:
    • Target: 44fa15
    • Baseline: 44fa15
  • Julia command flags:
    • Target: None
    • Baseline: None
  • Environment variables:
    • Target: JULIA_NUM_THREADS => 2
    • Baseline: JULIA_NUM_THREADS => 2

Results

A ratio greater than 1.0 denotes a possible regression (marked with ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID time ratio memory ratio
["collect", "unordered", "basesize=1024"] 1.09 (5%) ❌ 0.99 (1%) ✅
["overhead", "stoppable=true"] 1.06 (5%) ❌ 1.00 (1%)
["parallel_histogram", "comm", "basesize=4096"] 0.91 (5%) ✅ 0.98 (1%) ✅
["parallel_histogram", "comm", "basesize=8192"] 0.92 (5%) ✅ 0.98 (1%) ✅
["sum", "uniform", "reduce", "basesize=128"] 1.06 (5%) ❌ 1.00 (1%)
["sum", "uniform", "reduce", "basesize=256"] 1.05 (5%) ❌ 1.00 (1%)
["sum", "valley", "foldl"] 1.13 (5%) ❌ 1.00 (1%)
["sum", "valley", "reduce", "basesize=512"] 0.94 (5%) ✅ 1.00 (1%)

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["collect", "assoc"]
  • ["collect"]
  • ["collect", "unordered"]
  • ["findfirst", "n=1000"]
  • ["findfirst", "n=1000", "reduce"]
  • ["findfirst", "n=400"]
  • ["findfirst", "n=400", "reduce"]
  • ["findfirst", "n=500"]
  • ["findfirst", "n=500", "reduce"]
  • ["overhead"]
  • ["parallel_histogram", "assoc"]
  • ["parallel_histogram", "comm"]
  • ["parallel_histogram"]
  • ["sum", "random"]
  • ["sum", "random", "reduce"]
  • ["sum", "uniform"]
  • ["sum", "uniform", "reduce"]
  • ["sum", "valley"]
  • ["sum", "valley", "reduce"]
  • ["words"]

Julia versioninfo

Target

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2593 MHz      47857 s          0 s       2318 s      22150 s          0 s
       #2  2593 MHz      49960 s          0 s       2620 s      19673 s          0 s
       
  Memory: 6.791385650634766 GB (3213.9140625 MB free)
  Uptime: 740.0 sec
  Load Avg:  1.703125  1.4873046875  0.88232421875
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, skylake)

Baseline

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2593 MHz      72225 s          0 s       2926 s      25870 s          0 s
       #2  2593 MHz      70170 s          0 s       3238 s      27566 s          0 s
       
  Memory: 6.791385650634766 GB (3231.24609375 MB free)
  Uptime: 1028.0 sec
  Load Avg:  1.68505859375  1.5673828125  1.0830078125
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, skylake)

Target result

Benchmark Report for /home/runner/work/Transducers.jl/Transducers.jl

Job Properties

  • Time of benchmark: 29 Jun 2020 - 7:44
  • Package commit: 02009d
  • Julia commit: 44fa15
  • Julia command flags: None
  • Environment variables: JULIA_NUM_THREADS => 2

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["collect", "assoc", "basesize=1"] 333.722 ms (5%) 10.213 ms 87.55 MiB (1%) 1590810
["collect", "assoc", "basesize=1024"] 201.313 ms (5%) 1.84 MiB (1%) 1813
["collect", "assoc", "basesize=32"] 207.579 ms (5%) 5.64 MiB (1%) 54013
["collect", "seq"] 397.459 ms (5%) 1.50 MiB (1%) 32787
["collect", "unordered", "basesize=1"] 438.863 ms (5%) 29.15 MiB (1%) 402897
["collect", "unordered", "basesize=1024"] 265.986 ms (5%) 817.39 KiB (1%) 5405
["collect", "unordered", "basesize=32"] 235.383 ms (5%) 1.47 MiB (1%) 16926
["findfirst", "n=1000", "foldl"] 643.263 ms (5%)
["findfirst", "n=1000", "reduce", "basesize=128"] 320.641 ms (5%) 564.19 KiB (1%) 10239
["findfirst", "n=1000", "reduce", "basesize=256"] 320.376 ms (5%) 287.33 KiB (1%) 5231
["findfirst", "n=1000", "reduce", "basesize=512"] 324.488 ms (5%) 149.28 KiB (1%) 2723
["findfirst", "n=400", "foldl"] 477.891 ms (5%)
["findfirst", "n=400", "reduce", "basesize=128"] 244.853 ms (5%) 1.02 MiB (1%) 18978
["findfirst", "n=400", "reduce", "basesize=256"] 243.535 ms (5%) 526.23 KiB (1%) 9579
["findfirst", "n=400", "reduce", "basesize=512"] 244.681 ms (5%) 267.20 KiB (1%) 4878
["findfirst", "n=500", "foldl"] 82.211 ms (5%)
["findfirst", "n=500", "reduce", "basesize=128"] 42.538 ms (5%) 157.34 KiB (1%) 2851
["findfirst", "n=500", "reduce", "basesize=256"] 42.159 ms (5%) 84.48 KiB (1%) 1533
["findfirst", "n=500", "reduce", "basesize=512"] 44.735 ms (5%) 48.17 KiB (1%) 874
["overhead", "default"] 187.101 μs (5%) 146.16 KiB (1%) 2629
["overhead", "stoppable=false"] 189.301 μs (5%) 146.16 KiB (1%) 2629
["overhead", "stoppable=true"] 325.501 μs (5%) 146.41 KiB (1%) 2645
["parallel_histogram", "assoc", "basesize=16384"] 4.521 ms (5%) 732.02 KiB (1%) 101
["parallel_histogram", "assoc", "basesize=4096"] 5.160 ms (5%) 1.80 MiB (1%) 496
["parallel_histogram", "assoc", "basesize=8192"] 4.841 ms (5%) 1.43 MiB (1%) 240
["parallel_histogram", "comm", "basesize=16384"] 15.028 ms (5%) 1.22 MiB (1%) 160
["parallel_histogram", "comm", "basesize=4096"] 22.262 ms (5%) 1.07 MiB (1%) 5312
["parallel_histogram", "comm", "basesize=8192"] 18.180 ms (5%) 1.25 MiB (1%) 1899
["parallel_histogram", "seq"] 8.306 ms (5%) 364.64 KiB (1%) 26
["sum", "random", "foldl"] 16.188 ms (5%)
["sum", "random", "reduce", "basesize=128"] 8.731 ms (5%) 313.33 KiB (1%) 6067
["sum", "random", "reduce", "basesize=256"] 8.088 ms (5%) 155.09 KiB (1%) 3011
["sum", "random", "reduce", "basesize=512"] 8.344 ms (5%) 76.25 KiB (1%) 1484
["sum", "uniform", "foldl"] 15.559 ms (5%)
["sum", "uniform", "reduce", "basesize=128"] 8.413 ms (5%) 313.36 KiB (1%) 6069
["sum", "uniform", "reduce", "basesize=256"] 8.163 ms (5%) 155.09 KiB (1%) 3011
["sum", "uniform", "reduce", "basesize=512"] 7.608 ms (5%) 76.25 KiB (1%) 1484
["sum", "valley", "foldl"] 16.117 ms (5%)
["sum", "valley", "reduce", "basesize=128"] 8.682 ms (5%) 313.28 KiB (1%) 6064
["sum", "valley", "reduce", "basesize=256"] 8.464 ms (5%) 155.08 KiB (1%) 3010
["sum", "valley", "reduce", "basesize=512"] 7.866 ms (5%) 76.25 KiB (1%) 1484
["words", "nthreads=1"] 38.355 ms (5%) 7.101 ms 64.73 MiB (1%) 2094664
["words", "nthreads=2"] 21.621 ms (5%) 65.09 MiB (1%) 2094740
["words", "nthreads=4"] 22.268 ms (5%) 65.81 MiB (1%) 2094895

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["collect", "assoc"]
  • ["collect"]
  • ["collect", "unordered"]
  • ["findfirst", "n=1000"]
  • ["findfirst", "n=1000", "reduce"]
  • ["findfirst", "n=400"]
  • ["findfirst", "n=400", "reduce"]
  • ["findfirst", "n=500"]
  • ["findfirst", "n=500", "reduce"]
  • ["overhead"]
  • ["parallel_histogram", "assoc"]
  • ["parallel_histogram", "comm"]
  • ["parallel_histogram"]
  • ["sum", "random"]
  • ["sum", "random", "reduce"]
  • ["sum", "uniform"]
  • ["sum", "uniform", "reduce"]
  • ["sum", "valley"]
  • ["sum", "valley", "reduce"]
  • ["words"]

Julia versioninfo

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2593 MHz      47857 s          0 s       2318 s      22150 s          0 s
       #2  2593 MHz      49960 s          0 s       2620 s      19673 s          0 s
       
  Memory: 6.791385650634766 GB (3213.9140625 MB free)
  Uptime: 740.0 sec
  Load Avg:  1.703125  1.4873046875  0.88232421875
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, skylake)

Baseline result

Benchmark Report for /home/runner/work/Transducers.jl/Transducers.jl

Job Properties

  • Time of benchmark: 29 Jun 2020 - 7:49
  • Package commit: 8ccb58
  • Julia commit: 44fa15
  • Julia command flags: None
  • Environment variables: JULIA_NUM_THREADS => 2

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["collect", "assoc", "basesize=1"] 336.626 ms (5%) 9.116 ms 87.55 MiB (1%) 1590747
["collect", "assoc", "basesize=1024"] 204.225 ms (5%) 1.84 MiB (1%) 1813
["collect", "assoc", "basesize=32"] 207.069 ms (5%) 5.64 MiB (1%) 54014
["collect", "seq"] 397.742 ms (5%) 1.50 MiB (1%) 32787
["collect", "unordered", "basesize=1"] 445.824 ms (5%) 29.18 MiB (1%) 404737
["collect", "unordered", "basesize=1024"] 243.985 ms (5%) 826.16 KiB (1%) 5921
["collect", "unordered", "basesize=32"] 233.414 ms (5%) 1.47 MiB (1%) 17023
["findfirst", "n=1000", "foldl"] 629.807 ms (5%)
["findfirst", "n=1000", "reduce", "basesize=128"] 318.778 ms (5%) 564.25 KiB (1%) 10243
["findfirst", "n=1000", "reduce", "basesize=256"] 319.250 ms (5%) 287.34 KiB (1%) 5232
["findfirst", "n=1000", "reduce", "basesize=512"] 321.177 ms (5%) 149.27 KiB (1%) 2722
["findfirst", "n=400", "foldl"] 477.342 ms (5%)
["findfirst", "n=400", "reduce", "basesize=128"] 243.502 ms (5%) 1.02 MiB (1%) 18881
["findfirst", "n=400", "reduce", "basesize=256"] 240.849 ms (5%) 526.23 KiB (1%) 9579
["findfirst", "n=400", "reduce", "basesize=512"] 244.727 ms (5%) 267.14 KiB (1%) 4874
["findfirst", "n=500", "foldl"] 81.968 ms (5%)
["findfirst", "n=500", "reduce", "basesize=128"] 41.296 ms (5%) 157.31 KiB (1%) 2849
["findfirst", "n=500", "reduce", "basesize=256"] 41.941 ms (5%) 84.47 KiB (1%) 1532
["findfirst", "n=500", "reduce", "basesize=512"] 43.562 ms (5%) 48.20 KiB (1%) 876
["overhead", "default"] 185.601 μs (5%) 146.16 KiB (1%) 2629
["overhead", "stoppable=false"] 180.301 μs (5%) 146.14 KiB (1%) 2628
["overhead", "stoppable=true"] 305.701 μs (5%) 146.41 KiB (1%) 2645
["parallel_histogram", "assoc", "basesize=16384"] 4.517 ms (5%) 732.02 KiB (1%) 101
["parallel_histogram", "assoc", "basesize=4096"] 5.131 ms (5%) 1.80 MiB (1%) 496
["parallel_histogram", "assoc", "basesize=8192"] 4.831 ms (5%) 1.43 MiB (1%) 241
["parallel_histogram", "comm", "basesize=16384"] 14.660 ms (5%) 1.22 MiB (1%) 160
["parallel_histogram", "comm", "basesize=4096"] 24.336 ms (5%) 1.09 MiB (1%) 4706
["parallel_histogram", "comm", "basesize=8192"] 19.807 ms (5%) 1.28 MiB (1%) 3756
["parallel_histogram", "seq"] 8.176 ms (5%) 364.64 KiB (1%) 26
["sum", "random", "foldl"] 16.062 ms (5%)
["sum", "random", "reduce", "basesize=128"] 8.339 ms (5%) 313.36 KiB (1%) 6069
["sum", "random", "reduce", "basesize=256"] 8.109 ms (5%) 155.08 KiB (1%) 3010
["sum", "random", "reduce", "basesize=512"] 8.334 ms (5%) 76.23 KiB (1%) 1483
["sum", "uniform", "foldl"] 15.568 ms (5%)
["sum", "uniform", "reduce", "basesize=128"] 7.915 ms (5%) 313.31 KiB (1%) 6066
["sum", "uniform", "reduce", "basesize=256"] 7.758 ms (5%) 155.08 KiB (1%) 3010
["sum", "uniform", "reduce", "basesize=512"] 7.595 ms (5%) 76.25 KiB (1%) 1484
["sum", "valley", "foldl"] 14.306 ms (5%)
["sum", "valley", "reduce", "basesize=128"] 8.760 ms (5%) 313.28 KiB (1%) 6064
["sum", "valley", "reduce", "basesize=256"] 8.582 ms (5%) 155.09 KiB (1%) 3011
["sum", "valley", "reduce", "basesize=512"] 8.389 ms (5%) 76.28 KiB (1%) 1486
["words", "nthreads=1"] 38.045 ms (5%) 6.787 ms 64.87 MiB (1%) 2098741
["words", "nthreads=2"] 20.951 ms (5%) 65.59 MiB (1%) 2098896
["words", "nthreads=4"] 21.263 ms (5%) 66.04 MiB (1%) 2099046

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["collect", "assoc"]
  • ["collect"]
  • ["collect", "unordered"]
  • ["findfirst", "n=1000"]
  • ["findfirst", "n=1000", "reduce"]
  • ["findfirst", "n=400"]
  • ["findfirst", "n=400", "reduce"]
  • ["findfirst", "n=500"]
  • ["findfirst", "n=500", "reduce"]
  • ["overhead"]
  • ["parallel_histogram", "assoc"]
  • ["parallel_histogram", "comm"]
  • ["parallel_histogram"]
  • ["sum", "random"]
  • ["sum", "random", "reduce"]
  • ["sum", "uniform"]
  • ["sum", "uniform", "reduce"]
  • ["sum", "valley"]
  • ["sum", "valley", "reduce"]
  • ["words"]

Julia versioninfo

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2593 MHz      72225 s          0 s       2926 s      25870 s          0 s
       #2  2593 MHz      70170 s          0 s       3238 s      27566 s          0 s
       
  Memory: 6.791385650634766 GB (3231.24609375 MB free)
  Uptime: 1028.0 sec
  Load Avg:  1.68505859375  1.5673828125  1.0830078125
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, skylake)

Runtime information

Runtime Info
BLAS #threads 2
BLAS.vendor() openblas64
Sys.CPU_THREADS 2

lscpu output:

Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              2
On-line CPU(s) list: 0,1
Thread(s) per core:  1
Core(s) per socket:  2
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               85
Model name:          Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
Stepping:            7
CPU MHz:             2593.906
BogoMIPS:            5187.81
Hypervisor vendor:   Microsoft
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            1024K
L3 cache:            36608K
NUMA node0 CPU(s):   0,1
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt avx512cd avx512bw avx512vl xsaveopt xsavec xsaves md_clear
Cpu Property Value
Brand Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
Vendor :Intel
Architecture :Skylake
Model Family: 0x06, Model: 0x55, Stepping: 0x07, Type: 0x00
Cores 2 physical cores, 2 logical cores (on executing CPU)
No Hyperthreading detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 1024, 36608) kbytes
64 byte cache line size
Address Size 48 bits virtual, 46 bits physical
SIMD 512 bit = 64 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC increased at every clock cycle (non-invariant TSC)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft

Co-authored-by: Jan Weidner <jw3126@gmail.com>
@tkf
Copy link
Member Author

tkf commented Jun 30, 2020

Thanks!

src/core.jl Show resolved Hide resolved
Co-authored-by: Jan Weidner <jw3126@gmail.com>
Copy link
Contributor

@jw3126 jw3126 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do like this PR. While mathematically equivalent transforming reduction functions seems more confusing then transforming iterators for the human brain. Especially if you don't know/care about the implementation. I also appreciate how you managed to make this change only minimally breaking. And the docs are awesome, too. Thanks a lot for this great package! I really hope that over time more of it moves upstream into julia.

@tkf
Copy link
Member Author

tkf commented Jul 1, 2020

Thanks a lot! I've been agonising over the pros and cons of different approaches. It really helps to have your input!

For example, initially, I thought to defer defining xf(itr) to the next breaking release as it makes a |> xf ambiguous because it's a composition if a isa Transducers while otherwise xf(a). But after using that version just a few minutes, I realized that it'd be very painful to type \bbsemi and opcompose all the time. So, I just convinced myself that this "ambiguity" is OK since it's kind of like how * works with matrices and vectors. I'm still planning to remove ::Transducer |> ::Transducer but let's see how annoying the deprecation will be.

While mathematically equivalent transforming reduction functions seems more confusing then transforming iterators for the human brain. Especially if you don't know/care about the implementation.

Exactly my thought! I'm convinced more and more that hiding transducers from the high-level API is the way to go. It would also make "lowering" something like Partition(n)(xs::Vector) to Iterators.partition(xs, n) #7 more consistent with the idea. That is to say, transform reducing function by default but switch to the iterator transform interpretation if it's faster.

@@ -383,7 +383,7 @@ Composition of transducers.
@inline Base.:∘(g::Transducer, f::Composition) = g ∘ f.inner ∘ f.outer
@inline Base.:∘(f::Transducer, ::IdentityTransducer) = f
@inline Base.:∘(::IdentityTransducer, f::Transducer) = f
@inline Base.:∘(::IdentityTransducer, ::IdentityTransducer) = IdentityTransducer()
@inline Base.:∘(f::IdentityTransducer, ::IdentityTransducer) = f
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am curious, why you did this change?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Totally no reason 😅. I just wrote it this way in #323 and carried it over while solving the merge conflict (a bit hoping that it'd be close enough for the diff viewer to pretty-print it).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the clarification. I thought maybe this works around some compiler quirk that I should know about.

tkf added 5 commits July 3, 2020 00:25
The `_to_` in the URL is interpreted as emphasis in Julia's markdown
parser and it's rendered incorrectly in TerminalLoggers.jl.
@tkf
Copy link
Member Author

tkf commented Jul 3, 2020

While trying to use this branch in various downstreams, I realized that the default deprecation message unhelpful because it recommends opcompose instead of the iterator transformation style. So, I tweaked depwarn so that it links to the upgrade guide in the documentation. I also added a long detailed "depwarn" that is printed only once in a Julia session:

julia> using Transducers

julia> foldl(+, Filter(isodd) |> Map(inv), 1:5)
┌ Warning: `f::Transducer |> g::Transducer` is deprecated. Use `xs |> f |> g |> collect` instead of `collect(f |> g, xs)`. For more information, see https://juliafolds.github.io/Transducers.jl/dev/howto/upgrade-to-ixf/
│   caller = top-level scope at REPL[2]:1
└ @ Core REPL[2]:1
┌ Warning: `f::Transducer |> g::Transducer` is deprecated.  Instead of
│
│     collect(Filter(f) |> Map(g), xs)
│     foldl(+, Filter(f) |> Map(g), xs)
│
│ it's now recommended to use `|>` with input collection
│
│     xs |> Filter(f) |> Map(g) |> collect
│     foldl(+, xs |> Filter(f) |> Map(g))
│
│ If there is no input collection; e.g.,
│
│     foldl(right, GroupBy(key, Filter(f) |> Map(g), push!!), xs)
│
│ use `opcompose` instead:
│
│     foldl(right, GroupBy(key, opcompose(Map(f), Filter(g)), push!!), xs)
│
│ For more information, see:
│ https://juliafolds.github.io/Transducers.jl/dev/howto/upgrade-to-ixf/
└ @ Transducers ~/.julia/dev/Transducers/src/deprecated.jl:12
1.5333333333333332

julia> foldl(+, Filter(isodd) |> Map(inv), 1:5)  # no long depwarn for the second time
┌ Warning: `f::Transducer |> g::Transducer` is deprecated. Use `xs |> f |> g |> collect` instead of `collect(f |> g, xs)`. For more information, see https://juliafolds.github.io/Transducers.jl/dev/howto/upgrade-to-ixf/
│   caller = top-level scope at REPL[2]:1
└ @ Core REPL[2]:1
1.5333333333333332

(Preview of the upgrade guide: https://juliafolds.github.io/Transducers.jl/previews/PR319/howto/upgrade-to-ixf/)

@mergify mergify bot merged commit f2ab3d0 into master Jul 4, 2020
@mergify mergify bot deleted the compose branch July 4, 2020 07:17
@tkf tkf added this to the 0.5 milestone Jul 20, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Use instead of |> (was: Use instead of |>?)
2 participants