Simon Michael
58c3362908
lib: textification: saved journal source
...
Slightly worse on small files, better on large ones.
hledger -f data/100x100x10.journal stats
<<ghc: 39305392 bytes, 77 GCs, 196354/268584 avg/max bytes residency (3 samples), 2M in use, 0.000 INIT (0.007 elapsed), 0.014 MUT (0.027 elapsed), 0.011 GC (0.111 elapsed) :ghc>>
<<ghc: 39307728 bytes, 77 GCs, 196909/270248 avg/max bytes residency (3 samples), 2M in use, 0.001 INIT (0.010 elapsed), 0.015 MUT (0.028 elapsed), 0.012 GC (0.116 elapsed) :ghc>>
hledger -f data/1000x1000x10.journal stats
<<ghc: 314285912 bytes, 612 GCs, 2064811/6597608 avg/max bytes residency (7 samples), 16M in use, 0.000 INIT (0.002 elapsed), 0.126 MUT (0.134 elapsed), 0.059 GC (0.069 elapsed) :ghc>>
<<ghc: 314271368 bytes, 612 GCs, 2070227/6628024 avg/max bytes residency (7 samples), 16M in use, 0.000 INIT (0.000 elapsed), 0.137 MUT (0.143 elapsed), 0.059 GC (0.068 elapsed) :ghc>>
hledger -f data/10000x1000x10.journal stats
<<ghc: 3070033264 bytes, 5965 GCs, 12699294/62962464 avg/max bytes residency (10 samples), 124M in use, 0.000 INIT (0.000 elapsed), 1.245 MUT (1.300 elapsed), 0.498 GC (0.558 elapsed) :ghc>>
<<ghc: 3070006752 bytes, 5973 GCs, 12687314/62848920 avg/max bytes residency (10 samples), 124M in use, 0.000 INIT (0.003 elapsed), 1.257 MUT (1.281 elapsed), 0.496 GC (0.554 elapsed) :ghc>>
hledger -f data/100000x1000x10.journal stats
<<ghc: 30753465088 bytes, 59763 GCs, 117723618/666643528 avg/max bytes residency (14 samples), 1589M in use, 0.000 INIT (0.002 elapsed), 12.536 MUT (12.793 elapsed), 5.978 GC (7.155 elapsed) :ghc>>
<<ghc: 30753367256 bytes, 59811 GCs, 117723236/666627528 avg/max bytes residency (14 samples), 1590M in use, 0.001 INIT (0.012 elapsed), 12.923 MUT (13.169 elapsed), 5.981 GC (6.860 elapsed) :ghc>>
2016-05-24 19:00:57 -07:00
Simon Michael
102b76c17f
lib: textification: commodity symbols
...
hledger -f data/100x100x10.journal stats
<<ghc: 39288536 bytes, 77 GCs, 196608/269560 avg/max bytes residency (3 samples), 2M in use, 0.000 INIT (0.001 elapsed), 0.016 MUT (0.028 elapsed), 0.009 GC (0.012 elapsed) :ghc>>
<<ghc: 39290808 bytes, 77 GCs, 196608/269560 avg/max bytes residency (3 samples), 2M in use, 0.000 INIT (0.003 elapsed), 0.015 MUT (0.021 elapsed), 0.009 GC (0.011 elapsed) :ghc>>
hledger -f data/1000x100x10.journal stats
<<ghc: 314268960 bytes, 612 GCs, 2143219/6826152 avg/max bytes residency (7 samples), 16M in use, 0.000 INIT (0.009 elapsed), 0.135 MUT (0.151 elapsed), 0.065 GC (0.178 elapsed) :ghc>>
<<ghc: 314254512 bytes, 612 GCs, 2072377/6628024 avg/max bytes residency (7 samples), 16M in use, 0.000 INIT (0.000 elapsed), 0.130 MUT (0.134 elapsed), 0.064 GC (0.075 elapsed) :ghc>>
hledger -f data/10000x100x10.journal stats
<<ghc: 3070016592 bytes, 5965 GCs, 13138220/64266016 avg/max bytes residency (10 samples), 128M in use, 0.000 INIT (0.000 elapsed), 1.272 MUT (1.322 elapsed), 0.527 GC (0.595 elapsed) :ghc>>
<<ghc: 3069989896 bytes, 5973 GCs, 12687877/62848920 avg/max bytes residency (10 samples), 124M in use, 0.000 INIT (0.002 elapsed), 1.295 MUT (1.324 elapsed), 0.511 GC (0.570 elapsed) :ghc>>
hledger -f data/100000x100x10.journal stats
<<ghc: 30753448072 bytes, 59763 GCs, 121502982/673169248 avg/max bytes residency (14 samples), 1640M in use, 0.000 INIT (0.007 elapsed), 12.421 MUT (12.672 elapsed), 6.240 GC (7.812 elapsed) :ghc>>
<<ghc: 30753350528 bytes, 59811 GCs, 117616668/666703600 avg/max bytes residency (14 samples), 1588M in use, 0.001 INIT (0.011 elapsed), 13.209 MUT (13.683 elapsed), 6.137 GC (7.117 elapsed) :ghc>>
2016-05-24 19:00:57 -07:00
Simon Michael
2538d14ea7
lib: textification begins! account names
...
The first of several conversions from String to (strict) Text, hopefully
reducing space and time usage.
This one shows a small improvement, with GHC 7.10.3 and text-1.2.2.1:
hledger -f data/100x100x10.journal stats
string: <<ghc: 39471064 bytes, 77 GCs, 198421/275048 avg/max bytes residency (3 samples), 2M in use, 0.000 INIT (0.001 elapsed), 0.015 MUT (0.020 elapsed), 0.010 GC (0.014 elapsed) :ghc>>
text: <<ghc: 39268024 bytes, 77 GCs, 197018/270840 avg/max bytes residency (3 samples), 2M in use, 0.000 INIT (0.002 elapsed), 0.016 MUT (0.022 elapsed), 0.009 GC (0.011 elapsed) :ghc>>
hledger -f data/1000x100x10.journal stats
string: <<ghc: 318555920 bytes, 617 GCs, 2178997/7134472 avg/max bytes residency (7 samples), 16M in use, 0.000 INIT (0.001 elapsed), 0.129 MUT (0.136 elapsed), 0.067 GC (0.077 elapsed) :ghc>>
text: <<ghc: 314248496 bytes, 612 GCs, 2074045/6617960 avg/max bytes residency (7 samples), 16M in use, 0.000 INIT (0.003 elapsed), 0.137 MUT (0.145 elapsed), 0.067 GC (0.079 elapsed) :ghc>>
hledger -f data/10000x100x10.journal stats
string: <<ghc: 3114763608 bytes, 6026 GCs, 18858950/75552024 avg/max bytes residency (11 samples), 201M in use, 0.000 INIT (0.000 elapsed), 1.331 MUT (1.372 elapsed), 0.699 GC (0.812 elapsed) :ghc>>
text: <<ghc: 3071468920 bytes, 5968 GCs, 14120344/62951360 avg/max bytes residency (9 samples), 124M in use, 0.000 INIT (0.003 elapsed), 1.272 MUT (1.349 elapsed), 0.513 GC (0.578 elapsed) :ghc>>
hledger -f data/100000x100x10.journal stats
string: <<ghc: 31186579432 bytes, 60278 GCs, 135332581/740228992 avg/max bytes residency (13 samples), 1697M in use, 0.000 INIT (0.008 elapsed), 14.677 MUT (15.508 elapsed), 7.081 GC (8.074 elapsed) :ghc>>
text: <<ghc: 30753427672 bytes, 59763 GCs, 117595958/666457240 avg/max bytes residency (14 samples), 1588M in use, 0.000 INIT (0.008 elapsed), 13.713 MUT (13.966 elapsed), 6.220 GC (7.108 elapsed) :ghc>>
2016-05-24 19:00:49 -07:00
Simon Michael
097c9e09b6
lib: cleanups
2016-05-23 12:51:15 -07:00
Simon Michael
0f5ee154c4
lib: simplify parsers; cleanups ( #275 )
...
The journal/timeclock/timedot parsers, instead of constructing (opaque)
journal update functions which are later applied to build the journal,
now construct the journal directly (by modifying the parser state). This
is easier to understand and debug. It also removes any possibility of
the journal updates being a space leak. (They weren't, in fact memory
usage is now slightly higher, but that will be addressed in other ways.)
Also:
Journal data and journal parse info have been merged into one type (for
now), and field names are more consistent.
The ParsedJournal type alias has been added to distinguish being-parsed
and finalised journals.
Journal is now a monoid.
stats: fixed an issue with ordering of include files
journal: fixed an issue with ordering of included same-date transactions
timeclock: sessions can no longer span file boundaries (unclocked-out
sessions will be auto-closed at the end of the file).
expandPath now throws a proper IO error (and requires the IO monad).
2016-05-23 00:44:19 -07:00
Simon Michael
4179a83c1d
lib: pprint
2016-05-20 08:31:39 -07:00
Simon Michael
72bdce39b6
ui: fix a recent reload breakage ( fixes #346 )
...
Commit 0a90ef4
a few weeks ago caused hledger-ui to show wrong balances
after reloading with the g key, if the journal had changed and you had
specified a query on the command line.
Now, journalReloadIfChanged reloads the full journal without filtering,
like journalReload and withJournalDo.
2016-05-20 08:20:08 -07:00
Simon Michael
550e99acd3
lib: let dbg*IO work in any MonadIO
2016-05-20 07:51:51 -07:00
Simon Michael
e7c457f970
extra: update, stackify hledger-check-dates
2016-05-19 16:29:39 -07:00
Simon Michael
7f5e09096f
lib: rename JournalContext to JournalParseState
2016-05-18 20:57:34 -07:00
Simon Michael
ea383d88d6
lib: drop "double" build flag
2016-05-18 20:32:58 -07:00
Simon Michael
ff09d60746
lib: types whitespace
2016-05-18 20:28:37 -07:00
Simon Michael
f7e0f75c4f
rename a file to help git on windows ( #345 )
2016-05-18 16:52:10 -07:00
Simon Michael
ae490d738f
lib: Hledger.Read notes
2016-05-18 16:42:25 -07:00
Simon Michael
20bfceff2e
lib: allow multiple files of different format ( #320 )
...
When multiple files are specified with multiple -f options, we now
parse each one individually, rather than just concatenating them, so
they can have different formats.
Directives (like default year or account aliases) no longer carry over
from one file to the next. Limitation or feature ?
2016-05-18 16:41:52 -07:00
Simon Michael
fdd7feefdb
lib: make Journal a monoid
2016-05-18 15:08:50 -07:00
Simon Michael
6ed0369cdc
lib: note transaction idx only counts journal txns
2016-05-18 15:06:57 -07:00
Simon Michael
7e84b4d643
lib: rename get/setIndex, add increment fn
2016-05-18 15:06:16 -07:00
Simon Michael
80e8caebe7
func. test for 320
2016-05-18 13:10:41 -07:00
Simon Michael
975e3274ea
stats: fix func test
2016-05-17 19:52:19 -07:00
Simon Michael
e28ed0c927
stats: "journal file" -> "file"
2016-05-17 19:50:57 -07:00
Simon Michael
84097b75c7
journal: can now include timeclock/timedot files ( #320 )
...
journal files can now include journal, timeclock or timedot files (but
not yet CSV files). Also timeclock/timedot files no longer support
default year directives.
The Hledger.Read.* modules have been reorganised for better reuse.
Hledger.Read.Utils has been renamed Hledger.Read.Common and holds
low-level parsers & utilities; high-level read utilities have moved to
Hledger.Read.
2016-05-17 19:46:54 -07:00
Simon Michael
4dd7dba771
fix ghc pattern match warning ( #323 )
2016-05-17 18:42:37 -07:00
Simon Michael
ec507955e1
journal: simplify parse error
2016-05-17 10:06:51 -07:00
Simon Michael
59c2d73d14
doc: symlink other package docs into hledger ( #343 )
...
The hledger package tarball now contains a copy of the generated docs
from all the other packages, so that it can build without being in a
source tree.
2016-05-17 10:04:54 -07:00
Simon Michael
89b1cd1e5b
doc: readme for doc directories
2016-05-17 10:03:57 -07:00
Simon Michael
f0c219adaa
add missing benchmark file to cabal tarball ( #342 )
2016-05-17 09:04:53 -07:00
Simon Michael
695d96231c
test numbering
2016-05-13 22:10:23 -07:00
Simon Michael
9c130e1850
lib: journal: hlint cleanups!
...
Hopefully still backward compatible.
2016-05-13 22:09:39 -07:00
Simon Michael
16ee07cc52
remove temp type
2016-05-13 20:44:21 -07:00
Simon Michael
4063df0530
stack: add some required newer deps from hackage
2016-05-11 07:13:21 -07:00
Simon Michael
a569bf73c6
web: update wai-handler-launch for better startup ( fixes #226 )
2016-05-11 06:45:01 -07:00
Simon Michael
29d4f1c03f
ui: build faster, latest brick/vty uses microlens
2016-05-11 06:32:32 -07:00
Simon Michael
4d36b04856
stack: bump snapshot to lts-5.16
2016-05-11 06:30:57 -07:00
Simon Michael
9197c0545f
doc: journal: improve amount, virtual posting docs
2016-05-10 07:58:38 -07:00
Simon Michael
7a616d6779
doc: journal: commodity directive, amount formats ( #295 )
2016-05-08 21:10:58 -07:00
Simon Michael
ddefec412f
journal: also allow one-line commodity directives
2016-05-08 20:56:34 -07:00
Simon Michael
b583cb327d
lib: fix a warning
2016-05-08 20:55:59 -07:00
Simon Michael
9304aa1100
journal: commodity format directive overrides inferred style ( #295 )
...
The commodity directive's format subdirective can now be used to
override the inferred style for a commodity, eg to increase or decrease
the precision. This doesn't fix the root cause of #295 but is at least a
good workaround.
2016-05-08 09:07:08 -07:00
Simon Michael
2c0ef877eb
journal: parse and store commodity formats
2016-05-08 09:06:54 -07:00
Simon Michael
207922a023
lib: Commodity now has a CommoditySymbol and style
2016-05-08 08:07:27 -07:00
Simon Michael
8312573fed
tests for #295
2016-05-07 18:34:24 -07:00
Simon Michael
1b674cbb44
web: show a proper not found page on 404
2016-05-06 19:30:23 -07:00
Simon Michael
aac67b3d4d
lib: fix parsedate haddock
2016-05-06 19:02:48 -07:00
Malte Brandy
913b8e4c19
Add --pivot option with tests and docs ( #323 )
2016-05-06 18:27:35 -07:00
Simon Michael
f559cc8949
travis: add --no-haddock-deps, should work now
2016-05-06 18:16:59 -07:00
Simon Michael
ce344f9b96
lib: fix a haddock error
2016-05-06 18:16:12 -07:00
Simon Michael
e9c6c1ef5e
lib: convert date hunit tests to doctests
2016-05-06 18:10:49 -07:00
Simon Michael
c9a892eabe
lib: remove hopefully superfluous comment
2016-05-06 17:40:33 -07:00
Simon Michael
a52fd599c4
lib: more compact Show instance for datespans
2016-05-06 17:23:24 -07:00