From 09c1d5afba655a2427a448a9933bebe7d13b696b Mon Sep 17 00:00:00 2001 From: "klebinger.andreas@gmx.at" Date: Tue, 21 Aug 2018 12:10:38 -0400 Subject: Replace most occurences of foldl with foldl'. This patch adds foldl' to GhcPrelude and changes must occurences of foldl to foldl'. This leads to better performance especially for quick builds where GHC does not perform strictness analysis. It does change strictness behaviour when we use foldl' to turn a argument list into function applications. But this is only a drawback if code looks ONLY at the last argument but not at the first. And as the benchmarks show leads to fewer allocations in practice at O2. Compiler performance for Nofib: O2 Allocations: -1 s.d. ----- -0.0% +1 s.d. ----- -0.0% Average ----- -0.0% O2 Compile Time: -1 s.d. ----- -2.8% +1 s.d. ----- +1.3% Average ----- -0.8% O0 Allocations: -1 s.d. ----- -0.2% +1 s.d. ----- -0.1% Average ----- -0.2% Test Plan: ci Reviewers: goldfire, bgamari, simonmar, tdammers, monoidal Reviewed By: bgamari, monoidal Subscribers: tdammers, rwbarton, thomie, carter Differential Revision: https://phabricator.haskell.org/D4929 --- compiler/iface/TcIface.hs | 1 - 1 file changed, 1 deletion(-) (limited to 'compiler/iface/TcIface.hs') diff --git a/compiler/iface/TcIface.hs b/compiler/iface/TcIface.hs index f28708fd14..0dc3fb5381 100644 --- a/compiler/iface/TcIface.hs +++ b/compiler/iface/TcIface.hs @@ -75,7 +75,6 @@ import ListSetOps import GHC.Fingerprint import qualified BooleanFormula as BF -import Data.List import Control.Monad import qualified Data.Map as Map -- cgit v1.2.1