Sorry please ignore the Django comment for now. Hmm, interesting.
bean-check -v journal.beancount INFO : Operation: 'beancount.loader (total)' Time: 171 ms But every time I insert a new transaction, the beancount logo at the top left conner spins a little bit (definitely not instantaneous like the first few months). At my main computer, it's about a second. At my other machine, it definitely takes more than 2 seconds for every transaction. I have a total of 50k lines of data. But now i have split them into multiple files. But the performance is kinda the same. Is the issue I'm having on a slower machine normal? I don't know if it's relevant but I'm using beancount fava. Sorry if i'm asking the wrong question or posting it in the wrong group. Best, Huy. On Tuesday, November 19, 2019 at 8:27:04 AM UTC-6, Aamer wrote: > > Not sure I get the relevance of Django here. However, I had asked this > question in the past and I learned Beancount is already doing caching using > Pickle. > > Anything that takes longer than the threshold of 1 second to load will be > cached ( > https://bitbucket.org/blais/beancount/src/43f8972d57f4ac40757a0462af57b2be5feb311e/beancount/loader.py#lines-54 > ). > > On Tue, Nov 19, 2019 at 2:30 PM <[email protected] <javascript:>> wrote: > >> I love beancount. It changes everything that I do with accounting. >> >> But, I'm also hitting the performing issue whenever I save the file. >> >> Have you ever thought of using Django to take Beancount to the next >> level. It won't lose the plain-text accounting meaning much since we can >> easily export the whole transactions table into a beancount file any time. >> >> If not, is this approach doable? I recently have a structure like this: >> >> - myfolder/journals.beancount (imports all archived beancount files) >> - myfolder/archived/2018trans.beancount >> - myfolder/archived/2017trans.beancount >> - myfolder/archived/2016trans.beancount >> >> All files in archived should be cached indefinitely (until the archived >> files change) >> >> So the main beancount file is always small. It should be fast. But of >> course, that's not the case right now. It's still slow for me every time I >> save my journals.beancount >> >> Best, >> Huy. >> >> On Sunday, February 10, 2019 at 10:07:17 PM UTC-6, Martin Blais wrote: >>> >>> On Sun, Feb 10, 2019 at 11:34 AM <[email protected]> wrote: >>> >>>> Hi. >>>> >>>> I've been using Beancount and fava to report on microinvestment >>>> transactions. I'm hitting serious performance issues, as the journal for a >>>> single account is approaching 11Mb. (This is no criticism of either fava >>>> or >>>> Beancount, as I think this use case is probably far beyond their intended >>>> usage.) >>>> >>> >>> Big file. My entire history is around 4MB now, and it's starting to >>> bother me (even with the cache). >>> >>> >>> * Are there any big performance hits I could avoid (e.g. does relying on >>>> auto-posting have a significant impact)? >>>> >>> >>> I don't think so, though never say never, a pointed performance sprint >>> by someone who can profile C / Python well might yield some savings. >>> I've been thinking about rewriting all of beancount.core in C++, but >>> that's not going to be for Tomorrow just yet (I'm resisting, I have very >>> few cycles on my personal time as of late) and I'd have to also reimplement >>> the plugins (see below). >>> >>> You can view the breakdown in time with the -v option to bean-check: >>> $ bean-check -v $L >>> INFO : Operation: 'beancount.parser.parser.parse_file' >>> Time: 732 ms >>> INFO : Operation: 'beancount.parser.parser.parse_file' >>> Time: 7 ms >>> INFO : Operation: 'beancount.parser.parser' >>> Time: 740 ms >>> INFO : Operation: 'parse' >>> Time: 755 ms >>> INFO : Operation: 'booking' >>> Time: 1219 ms >>> INFO : Operation: 'beancount.ops.pad' >>> Time: 125 ms >>> INFO : Operation: 'beancount.ops.documents' >>> Time: 128 ms >>> INFO : Operation: 'beancount.plugins.ira_contribs' >>> Time: 21 ms >>> INFO : Operation: 'beancount.plugins.implicit_prices' >>> Time: 171 ms >>> INFO : Operation: 'beancount.plugins.sellgains' >>> Time: 23 ms >>> INFO : Operation: 'beancount.plugins.check_closing' >>> Time: 18 ms >>> INFO : Operation: 'washsales.commissions' >>> Time: 29 ms >>> INFO : Operation: 'beancount.plugins.check_commodity' >>> Time: 31 ms >>> INFO : Operation: 'beancount.plugins.commodity_attr' >>> Time: 4 ms >>> INFO : Operation: 'office.options' >>> Time: 5 ms >>> INFO : Operation: 'office.share_caroline' >>> Time: 19 ms >>> INFO : Operation: 'beancount.plugins.divert_expenses' >>> Time: 7 ms >>> INFO : Operation: 'beancount.ops.balance' >>> Time: 616 ms >>> INFO : Operation: 'run_transformations' >>> Time: 1470 ms >>> INFO : Operation: 'function: validate_open_close' >>> Time: 6 ms >>> INFO : Operation: 'function: validate_active_accounts' >>> Time: 38 ms >>> INFO : Operation: 'function: validate_currency_constraints' >>> Time: 25 ms >>> INFO : Operation: 'function: validate_duplicate_balances' >>> Time: 8 ms >>> INFO : Operation: 'function: validate_duplicate_commodities' >>> Time: 4 ms >>> INFO : Operation: 'function: validate_documents_paths' >>> Time: 5 ms >>> INFO : Operation: 'function: validate_check_transaction_balances' >>> Time: 264 ms >>> INFO : Operation: 'function: validate_data_types' >>> Time: 100 ms >>> INFO : Operation: 'beancount.ops.validate' >>> Time: 450 ms >>> INFO : Operation: 'beancount.loader (total)' >>> Time: 4529 ms >>> >>> That's on a ~4MB file running on my little Intel NUC. >>> As you can see, the parsing, booking, and plugins (transformations) code >>> are the big hitters. >>> >>> >>> >>>> * Does anyone know of any tools out there for aggregating journal >>>> entries into summary journals (or has anyone had any success using >>>> Beancount's API to do this)? >>>> >>> >>> I may have tried to do that in the past, but Beancount itself doesn't >>> provide a tool. >>> If I did, it lives somewhere under experiments/ (honestly I can't >>> remember). >>> Well, you can also run bean-query with a FROM CLOSE ON <date> bit to >>> compute the balances. >>> >>> TBH, a script to do this is probably easy to do. The only potentially >>> problematic part is the automatically inserted Conversions transaction, >>> which is used to bring all the income accounts precisely to zero. >>> >>> (Further, note that this conversion transaction (generated by CLOSE ON) >>> would disappear should be implement the Selinger "currency accounts" >>> plugin, which would be easy to do. This plugin idea would automatically >>> insert currency account postings on transactions which have more than one >>> currency group, to implement Selinger's method. Then you don't need a >>> special conversions transaction when you close the year, because in every >>> transaction every currency group sums up to zero. WHat I'm talking about is >>> this doc: https://www.mathstat.dal.ca/~selinger/accounting/tutorial.html >>> ) >>> >>> >>> >>> >>>> >>>> Cheers. >>>> >>>> -Mick. >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Beancount" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To post to this group, send email to [email protected]. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/beancount/d778316a-e755-4d7f-94e4-1969280e8bdd%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/beancount/d778316a-e755-4d7f-94e4-1969280e8bdd%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> -- >> You received this message because you are subscribed to the Google Groups >> "Beancount" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/beancount/a45fed05-24b8-4e4f-a966-d5eec455029c%40googlegroups.com >> >> <https://groups.google.com/d/msgid/beancount/a45fed05-24b8-4e4f-a966-d5eec455029c%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "Beancount" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/e8cd764e-bc63-4b87-9c2f-0c89060e1267%40googlegroups.com.
