Commit Graph

926 Commits

Author SHA1 Message Date
Jonathan Daugherty
d6a069401e
Merge pull request #232 from iphydf/speedup-large-paste
perf: Improve performance for large bracketed pastes.
2022-03-09 11:33:11 -08:00
iphydf
6b8d0639c3
perf: Improve performance for large bracketed pastes.
The current algorithm has polynomial time complexity. The new algorithm
runs in linear time and is generally much more efficient because it
operates on packed byte strings instead of linked lists of Char.

Some timing:
* 100KB: 1 second
* 200KB: 2.5 seconds
* 300KB: 4 seconds
* 400KB: 7 seconds
* 500KB: 12 seconds
* 600KB: 16 seconds
* 700KB: 22 seconds

As we can see, it's still `O(n^2)` overall, probably because of the
calls to `bracketedPasteFinished`. I'll investigate that next. The
constant factor overall is much lower now:
```
Before: 2.866E-6n^3  - 1.784E-4n^2 + 0.114n - 2.622
After:  -1.389E-8n^3 + 5.53E-5n^2  - 1.604E-3n + 0.273
```
2022-03-09 18:49:34 +00:00
Jonathan Daugherty
b3504fbcb0 Bump version, update changelog 2022-02-27 15:23:39 -08:00
Jonathan Daugherty
9891504cfb Fix Cursor constructor documentation order (fixes #229) 2022-01-10 15:36:02 -08:00
Jonathan Daugherty
f8f45c2af5 Remove Monoid and Semigroup instances for Attr and MaybeDefault (relevant to brick/#351)
This change removes the aforementioned instances because they were
misbehaved; merging Attr and MaybeDefault values with these instances
resulted in field value losses. For example, before this change,

  (defAttr `withForeColor` blue) <> (defAttr `withBackColor` green)

would result in just

  (defAttr `withBackColor` green)

because the instances were designed to favor the right-hand arguments'
fields even if they had not been explicitly set (a consequence of the
MaybeDefault Semigroup instance). While that behavior was sensible
specifically in the context of Graphics.Vty.Inline, it wasn't a useful
user-facing API and it made for surprising instance behavior. Since
there is actually no good way to handle this in a Semigroup instance for
Attr -- some choices have to be made about how to merge two attributes'
foreground colors, and that won't be much better than what we had -- the
instance was just removed. I suspect that the risk of this impacting
users negatively is very low, given that the instance behavior was not
very useful.
2021-11-23 15:41:02 -08:00
Jonathan Daugherty
67b25158f9
Merge pull request #228 from mlang/NFData
NFData instance for Event
2021-07-16 08:59:00 -07:00
Mario Lang
a6c346b410 NFData instance for Event 2021-07-16 13:59:16 +02:00
Jonathan Daugherty
abf7fc4cd7 Remove defunct Eq contraints on Semigroup and Monoid instances for MaybeDefault 2021-06-28 05:27:51 -07:00
Jonathan Daugherty
fe501ccf27
Merge pull request #225 from hapytex/improvement/maybedefault-semigroup
A simpler version of the Semigroup instance for MaybeDefault
2021-06-11 05:45:18 -07:00
Willem Van Onsem
b1d5762e0e
revert irrefutable pattern 2021-06-11 08:00:29 +02:00
Willem Van Onsem
e98e94870e
import semigroup 2021-06-10 23:22:57 +02:00
Willem Van Onsem
81b6151d51
irrefutable pattern 2021-06-10 23:15:48 +02:00
Willem Van Onsem
ed04989938
more simplification 2021-06-10 23:15:02 +02:00
Willem Van Onsem
380b618bbf
fix spacing 2021-06-10 23:00:49 +02:00
Willem Van Onsem
e83882c35b
add missing test file 2021-06-10 22:55:31 +02:00
Willem Van Onsem
000f901a93
simplify the Semigroup instance of MaybeDefault 2021-06-10 22:52:17 +02:00
Jonathan Daugherty
fa74b0ae1c
Merge pull request #217 from felixonmars/patch-2
Fix upper bound for `random`
2021-02-24 11:24:29 -08:00
Felix Yan
c0d38a16ba
Fix upper bound for random
It was missing in 05b65fc5bc (diff-bbe7cbd3346ad764f4c6f56880116550ee4f4a768d2a578ede1c0ce22b36fb4f)
2021-02-25 03:13:47 +08:00
Jonathan Daugherty
e953272793 Bump version, update changelog 2021-02-22 17:39:10 -08:00
Jonathan Daugherty
62f5ea36e8
Merge pull request #215 from hapytex/hlint/remove-unused-pragmas
Remove unused LANGUAGE pragmas
2021-02-18 07:30:49 -08:00
Jonathan Daugherty
b21145850c
Merge pull request #216 from hapytex/hlint/redundant-dollar
remove redundant $s
2021-02-18 06:52:28 -08:00
Willem Van Onsem
68ec269cf5
remove redundant $s 2021-02-18 07:40:26 +01:00
Willem Van Onsem
b91829353f remove unused BangPatterns 2021-02-18 07:24:07 +01:00
Willem Van Onsem
152d3d6c07 remove unused NamedFieldPuns 2021-02-18 07:21:23 +01:00
Jonathan Daugherty
fdad9586c4
Merge pull request #214 from hapytex/hlint/atomically-to-io
use readTVarIO and newTVarIO as specialized atomic versions of readTV…
2021-02-17 14:48:41 -08:00
Willem Van Onsem
f0fb92aca0 use readTVarIO and newTVarIO as specialized atomic versions of readTVar and newTVar 2021-02-17 23:46:15 +01:00
Jonathan Daugherty
003f491a43
Merge pull request #212 from hapytex/hlint/group-import
Hlint/group import
2021-02-17 14:41:10 -08:00
Jonathan Daugherty
2a881950de
Merge pull request #213 from hapytex/hlint/use-head
Use head over !!0
2021-02-17 14:40:57 -08:00
Willem Van Onsem
a803a2ad72 use head over !!0 2021-02-17 23:38:49 +01:00
Willem Van Onsem
194cd8502c group import 2021-02-17 23:35:49 +01:00
Willem Van Onsem
e886dc0f83
Merge pull request #2 from jtdaugherty/master
sync
2021-02-17 07:43:55 +01:00
Jonathan Daugherty
309c0e4824
Merge pull request #209 from hapytex/improvement/simplify-color
rewrite the color logic
2021-02-16 13:34:13 -08:00
Willem Van Onsem
9605e5f2fb added test to check equivalence with the old implementation 2021-02-16 22:21:00 +01:00
Jonathan Daugherty
bf0874598f combinedOpsForLayers: fix 2021-02-16 13:10:06 -08:00
Jonathan Daugherty
f5b7222065
Merge pull request #196 from lehins/master
Update upper bounds for `random`
2021-02-16 13:07:55 -08:00
Jonathan Daugherty
f0f729d755
Merge pull request #202 from hapytex/hlint/eta-reduction
eta reductions
2021-02-16 09:45:47 -08:00
Jonathan Daugherty
572c59881b
Merge pull request #203 from hapytex/hlint/use-fmap
make use of <$>
2021-02-16 09:44:49 -08:00
Willem Van Onsem
9eaa5e5cb5 16 iso 15 2021-02-16 13:27:46 +01:00
Willem Van Onsem
598b0148b6
Merge pull request #1 from jtdaugherty/master
sync
2021-02-16 12:19:13 +01:00
Willem Van Onsem
ffdd86df1c rewrite the color logic 2021-02-16 12:15:12 +01:00
Willem Van Onsem
f2c58a1870 extra improvements 2021-02-16 09:26:54 +01:00
Jonathan Daugherty
dfa4c1ec08
Merge pull request #207 from hapytex/hlint/redundant-bracket
remove useless parenthesis and ellipse
2021-02-15 15:58:45 -08:00
Willem Van Onsem
9c479554ee revert pattern brackets 2021-02-15 23:59:25 +01:00
Jonathan Daugherty
ab621ee8a4
Merge pull request #204 from hapytex/hlint/remove-lambda
avoid lambda expressions
2021-02-15 14:48:32 -08:00
Jonathan Daugherty
7f8d21b8d6
Merge pull request #205 from hapytex/hlint/use-string
use String over [Char]
2021-02-15 14:43:08 -08:00
Willem Van Onsem
0e5c1646f6 remove useless parenthesis and ellipse 2021-02-15 23:07:09 +01:00
Willem Van Onsem
bed8068d37 use String over [Char] 2021-02-15 17:42:45 +01:00
Willem Van Onsem
b5da64bb63 avoid lambda expressions 2021-02-15 17:39:53 +01:00
Willem Van Onsem
d3a1a5576a make use of <$> 2021-02-15 17:08:15 +01:00
Willem Van Onsem
ec463f1c85 eta reductions 2021-02-15 12:12:20 +01:00