A number of things.
The slowness is one thing, but like you said, won't be an issue with the C++ version.
The other thing is, for this type of import, usually you need multiple steps of import.You have the intra-day or nightly process, and then the post-settlement process (which for me is weekends). The goal is to create a single clean database of each trade with all the associated costs, ids and details.
For example, TD's platform only provides intraday via thinkorswim, and that requires joining two tables to get an accurate picture (a trade history table and a table of the cash settlement account). One gives you the individual legs of the trade (the multiple options/stocks involved) and the other the fees, but no transaction ids, only order ids.
And the fees aren't broken down by option. You then have to later on, once the information shows up through the API, join in that data if you want the full picture. This includes the unique transaction IDs that make it easy to later on filter out past data unambiguously.
What's more, futures accounts are settled separately and aren't available through their API, and have an additional daily set of mark-to-market transactions, which is yet another step. And there's a whole set of other complications as well, e.g. inconsistencies between names pulled from TOS and from the API, around name changes.
I suppose you could just wait 3-4 days and then create a multi-source join of all this data, but the way I like to trade involves keeping track of chains of trades as a logical unit, considering position adjustments as part of the single sequence of events. In other words, since I entered a position, considering all the connected adjustments, what is the total amount of credits & debits related to them. In my view, that's the correct way of looking at P/L for a single trade. If you collected 3.15 initially and made an adjustment that cost you 0.65, you current cost basis is 2.50. And I need that at least daily to know what's the cost, which can only be computed one of the way. But later I also want a clean full reconciliation that includes all the particular fees and details.
Other people give up and just look at their Net Liq, trusting that they're doing a good job. I'm a bit of a Beancounter, so I like to know the specifics of the health of each of the little plants in my garden.
The analysis wouldn't change. I'd only convert the trades from Beancount back into a flat table. It's only a difference of backend.
If you did all that with Beancount, you'd have to build a conversion from the much more general transactions to a simple flat schema with fixed fields, making assumptions on the transaction. That's doable, but then you'd also have to find a way to update the text file - when you join data from an additional data source - while minimizing changes (I suppose that's doable with the line numbers). I think it's doable, but I don't know if it's worth it. Having the transactions in Beancount allows you to highlight regions and compute aggregate cost & P/L over the region, so that's nice, but I find that I care more about aggregate statistics and win rates than this minutiae.
Doing this right with the intent to have Beancount be the full database would involve creating a solid way to join in data to an existing ledger with minimal disruption to the Ledger. I think that might tip the balance over.