@@ -261,7 +261,16 @@ library
261 , Streamly.Benchmark.FileIO.Stream
261 , Streamly.Benchmark.FileIO.Stream
263 default-language: Haskell2010
263 default-language: Haskell2010
264+ -- We need optimization options here to optimize internal (non-inlined)
265+ -- versions of functions. Also, we have some benchmarking inspection tests
266+ -- part of the library when built with --benchmarks flag. Thos tests fail
267+ -- if we do not use optimization options here. It was observed that due to
268+ -- -O2 here some concurrent/nested benchmarks improved and others regressed.
269+ -- We can investigate a bit more here why the regression occurred.
264− ghc-options: -Wall -O2 -fspec-constr-recursive=10
272+ -fspec-constr-recursive=10
273+ -fmax-worker-args=16
266 if flag(has-llvm)
275 if flag(has-llvm)
267 ghc-options: -fllvm
276 ghc-options: -fllvm
@@ -562,7 +571,11 @@ benchmark linear
562 main-is: Linear.hs
571 main-is: Linear.hs
563 other-modules: LinearOps
572 other-modules: LinearOps
564 default-language: Haskell2010
573 default-language: Haskell2010
565− ghc-options: -O2 -Wall -with-rtsopts "-T" -fspec-constr-recursive=10
574+ ghc-options: -O2
575+ -fspec-constr-recursive=10
576+ -fmax-worker-args=16
567 if flag(has-llvm)
580 if flag(has-llvm)
568 ghc-options: -fllvm
581 ghc-options: -fllvm
@@ -596,7 +609,11 @@ benchmark linear-async
596 main-is: LinearAsync.hs
609 main-is: LinearAsync.hs
597 other-modules: LinearOps
610 other-modules: LinearOps
598 default-language: Haskell2010
611 default-language: Haskell2010
599− ghc-options: -O2 -Wall -fspec-constr-recursive=10 -with-rtsopts "-T"
613+ -fspec-constr-recursive=10
614+ -fmax-worker-args=16
601 if flag(has-llvm)
618 if flag(has-llvm)
602 ghc-options: -fllvm
619 ghc-options: -fllvm
@@ -631,7 +648,11 @@ benchmark linear-rate
631 main-is: LinearRate.hs
648 main-is: LinearRate.hs
632 other-modules: LinearOps
649 other-modules: LinearOps
633 default-language: Haskell2010
650 default-language: Haskell2010
634− ghc-options: -O2 -Wall -fspec-constr-recursive=10 -with-rtsopts "-T"
652+ -fspec-constr-recursive=10
653+ -fmax-worker-args=16
636 if flag(has-llvm)
657 if flag(has-llvm)
637 ghc-options: -fllvm
658 ghc-options: -fllvm
@@ -665,7 +686,11 @@ benchmark nested
665 main-is: Nested.hs
686 main-is: Nested.hs
666 other-modules: NestedOps
687 other-modules: NestedOps
667 default-language: Haskell2010
688 default-language: Haskell2010
668− ghc-options: -O2 -Wall -fspec-constr-recursive=10 -with-rtsopts "-T"
690+ -fspec-constr-recursive=10
691+ -fmax-worker-args=16
670 if flag(has-llvm)
695 if flag(has-llvm)
671 ghc-options: -fllvm
696 ghc-options: -fllvm
@@ -700,7 +725,11 @@ benchmark array
700 main-is: Array.hs
725 main-is: Array.hs
701 other-modules: ArrayOps
726 other-modules: ArrayOps
702 default-language: Haskell2010
727 default-language: Haskell2010
703− ghc-options: -O2 -Wall -with-rtsopts "-T" -fspec-constr-recursive=10
728+ ghc-options: -O2
729+ -fspec-constr-recursive=10
730+ -fmax-worker-args=16
705 if flag(has-llvm)
734 if flag(has-llvm)
706 ghc-options: -fllvm
735 ghc-options: -fllvm
@@ -734,7 +763,11 @@ benchmark fileio
734 hs-source-dirs: benchmark
763 hs-source-dirs: benchmark
735 main-is: FileIO.hs
764 main-is: FileIO.hs
736 default-language: Haskell2010
765 default-language: Haskell2010
737− ghc-options: -O2 -Wall -fspec-constr-recursive=10 -with-rtsopts "-T"
767+ -fspec-constr-recursive=10
768+ -fmax-worker-args=16
739 if flag(has-llvm)
772 if flag(has-llvm)
740 ghc-options: -fllvm
773 ghc-options: -fllvm
@@ -770,7 +803,11 @@ benchmark concurrent
770 hs-source-dirs: benchmark
803 hs-source-dirs: benchmark
771 main-is: Concurrent.hs
804 main-is: Concurrent.hs
772 default-language: Haskell2010
805 default-language: Haskell2010
773− ghc-options: -O2 -Wall -fspec-constr-recursive=10 -with-rtsopts "-T"
807+ -fspec-constr-recursive=10
808+ -fmax-worker-args=16
775 if flag(has-llvm)
812 if flag(has-llvm)
776 ghc-options: -fllvm
813 ghc-options: -fllvm
@@ -830,7 +867,11 @@ benchmark base
830 , StreamKOps
867 , StreamKOps
832 default-language: Haskell2010
869 default-language: Haskell2010
833− ghc-options: -O2 -Wall -fspec-constr-recursive=10 -with-rtsopts "-T"
871+ -fspec-constr-recursive=10
872+ -fmax-worker-args=16
835 if flag(has-llvm)
876 if flag(has-llvm)
836 ghc-options: -fllvm
877 ghc-options: -fllvm
@@ -896,7 +937,11 @@ executable nano-bench
896 , Streamly.FileSystem.IOVec
937 , Streamly.FileSystem.IOVec
897 , Streamly.Streams.StreamD
938 , Streamly.Streams.StreamD
898 default-language: Haskell2010
939 default-language: Haskell2010
899− ghc-options: -O2 -Wall -with-rtsopts "-T"
940+ ghc-options: -O2
941+ -fspec-constr-recursive=10
942+ -fmax-worker-args=16
901 if flag(has-llvm)
946 if flag(has-llvm)
902 ghc-options: -fllvm
947 ghc-options: -fllvm
@@ -928,7 +973,11 @@ executable adaptive
928 hs-source-dirs: benchmark
973 hs-source-dirs: benchmark
929 main-is: Adaptive.hs
974 main-is: Adaptive.hs
930 default-language: Haskell2010
975 default-language: Haskell2010
931− ghc-options: -O2 -Wall -with-rtsopts "-T"
976+ ghc-options: -O2
977+ -fspec-constr-recursive=10
978+ -fmax-worker-args=16
933 if flag(has-llvm)
982 if flag(has-llvm)
934 ghc-options: -fllvm
983 ghc-options: -fllvm
@@ -965,7 +1014,11 @@ executable SearchQuery
965 default-language: Haskell2010
1014 default-language: Haskell2010
966 main-is: SearchQuery.hs
1015 main-is: SearchQuery.hs
967 hs-source-dirs: examples
1016 hs-source-dirs: examples
968− ghc-options: -Wall
1017+ ghc-options: -O2
1018+ -fspec-constr-recursive=10
1019+ -fmax-worker-args=16
969 if (flag(examples) || flag(examples-sdl)) && !impl(ghcjs)
1022 if (flag(examples) || flag(examples-sdl)) && !impl(ghcjs)
970 buildable: True
1023 buildable: True
971 build-Depends:
1024 build-Depends:
@@ -979,7 +1032,11 @@ executable ListDir
979 default-language: Haskell2010
1032 default-language: Haskell2010
980 main-is: ListDir.hs
1033 main-is: ListDir.hs
981 hs-source-dirs: examples
1034 hs-source-dirs: examples
982− ghc-options: -Wall
1035+ ghc-options: -O2
1036+ -fspec-constr-recursive=10
1037+ -fmax-worker-args=16
983 if flag(examples) || flag(examples-sdl)
1040 if flag(examples) || flag(examples-sdl)
984 buildable: True
1041 buildable: True
985 build-Depends:
1042 build-Depends:
@@ -996,7 +1053,11 @@ executable MergeSort
996 default-language: Haskell2010
1053 default-language: Haskell2010
997 main-is: MergeSort.hs
1054 main-is: MergeSort.hs
998 hs-source-dirs: examples
1055 hs-source-dirs: examples
999− ghc-options: -Wall
1056+ ghc-options: -O2
1057+ -fspec-constr-recursive=10
1058+ -fmax-worker-args=16
1000 if flag(examples) || flag(examples-sdl)
1061 if flag(examples) || flag(examples-sdl)
1001 buildable: True
1062 buildable: True
1002 build-Depends:
1063 build-Depends:
@@ -1010,7 +1071,11 @@ executable AcidRain
1010 default-language: Haskell2010
1071 default-language: Haskell2010
1011 main-is: AcidRain.hs
1072 main-is: AcidRain.hs
1012 hs-source-dirs: examples
1073 hs-source-dirs: examples
1013− ghc-options: -Wall
1074+ ghc-options: -O2
1075+ -fspec-constr-recursive=10
1076+ -fmax-worker-args=16
1014 if flag(examples) || flag(examples-sdl)
1079 if flag(examples) || flag(examples-sdl)
1015 buildable: True
1080 buildable: True
1016 build-Depends:
1081 build-Depends:
@@ -1028,7 +1093,11 @@ executable CirclingSquare
1028 default-language: Haskell2010
1093 default-language: Haskell2010
1029 main-is: CirclingSquare.hs
1094 main-is: CirclingSquare.hs
1030 hs-source-dirs: examples
1095 hs-source-dirs: examples
1031− ghc-options: -Wall
1096+ ghc-options: -O2
1097+ -fspec-constr-recursive=10
1098+ -fmax-worker-args=16
1032 if flag(examples-sdl)
1101 if flag(examples-sdl)
1033 buildable: True
1102 buildable: True
1034 build-Depends:
1103 build-Depends:
@@ -1061,7 +1130,11 @@ executable HandleIO
1061 default-language: Haskell2010
1130 default-language: Haskell2010
1062 main-is: HandleIO.hs
1131 main-is: HandleIO.hs
1063 hs-source-dirs: examples
1132 hs-source-dirs: examples
1064− ghc-options: -Wall
1133+ ghc-options: -O2
1134+ -fspec-constr-recursive=10
1135+ -fmax-worker-args=16
1065 if flag(examples) || flag(examples-sdl)
1138 if flag(examples) || flag(examples-sdl)
1066 buildable: True
1139 buildable: True
1067 build-Depends:
1140 build-Depends:
@@ -1074,7 +1147,11 @@ executable FileIOExamples
1074 default-language: Haskell2010
1147 default-language: Haskell2010
1075 main-is: FileIOExamples.hs
1148 main-is: FileIOExamples.hs
1076 hs-source-dirs: examples
1149 hs-source-dirs: examples
1077− ghc-options: -Wall
1150+ ghc-options: -O2
1151+ -fspec-constr-recursive=10
1152+ -fmax-worker-args=16
1078 if flag(examples) || flag(examples-sdl)
1155 if flag(examples) || flag(examples-sdl)
1079 buildable: False
1156 buildable: False
1080 build-Depends:
1157 build-Depends:
@@ -1087,7 +1164,11 @@ executable EchoServer
1087 default-language: Haskell2010
1164 default-language: Haskell2010
1088 main-is: EchoServer.hs
1165 main-is: EchoServer.hs
1089 hs-source-dirs: examples
1166 hs-source-dirs: examples
1090− ghc-options: -Wall
1167+ ghc-options: -O2
1168+ -fspec-constr-recursive=10
1169+ -fmax-worker-args=16
1091 if (flag(examples) || flag(examples-sdl)) && !impl(ghcjs)
1172 if (flag(examples) || flag(examples-sdl)) && !impl(ghcjs)
1092 buildable: True
1173 buildable: True
1093 build-Depends:
1174 build-Depends:
@@ -1100,7 +1181,11 @@ executable FileSinkServer
1100 default-language: Haskell2010
1181 default-language: Haskell2010
1101 main-is: FileSinkServer.hs
1182 main-is: FileSinkServer.hs
1102 hs-source-dirs: examples
1183 hs-source-dirs: examples
1103− ghc-options: -Wall
1184+ ghc-options: -O2
1185+ -fspec-constr-recursive=10
1186+ -fmax-worker-args=16
1104 if (flag(examples) || flag(examples-sdl)) && !impl(ghcjs)
1189 if (flag(examples) || flag(examples-sdl)) && !impl(ghcjs)
1105 buildable: True
1190 buildable: True
1106 build-Depends:
1191 build-Depends:
@@ -1113,7 +1198,11 @@ executable FromFileClient
1113 default-language: Haskell2010
1198 default-language: Haskell2010
1114 main-is: FromFileClient.hs
1199 main-is: FromFileClient.hs
1115 hs-source-dirs: examples
1200 hs-source-dirs: examples
1116− ghc-options: -Wall
1201+ ghc-options: -O2
1202+ -fspec-constr-recursive=10
1203+ -fmax-worker-args=16
1117 if (flag(examples) || flag(examples-sdl)) && !impl(ghcjs)
1206 if (flag(examples) || flag(examples-sdl)) && !impl(ghcjs)
1118 buildable: True
1207 buildable: True
1119 build-Depends:
1208 build-Depends: