On May 28, 2014, at 6:39 AM, David Carlson wrote: > On 5/25/2014 9:34 AM, John Ralls wrote: >> On 25 May 2014, at 07:19, John Ralls <jra...@ceridwen.us> wrote: >> >>> On 25 May 2014, at 01:54, Christian Stimming (mobil) >>> <christ...@cstimming.de> wrote: >>> >>>> Thanks for starting the discussion. >>>> >>>> If we've reached the point where our int64 rational numbers do not fit our >>>> problem requirements anymore, I'd rather look for a different number >>>> representation that fits our application domain better. I'm thinking about >>>> replacing rational numbers by decimal floating point numbers. That is, a >>>> number is represented by m * 10^e with the mantissa m and exponent e as >>>> signed integers. This is different from our normal *binary* floating point >>>> in that we use the exponent with base 10. However, all common rules for >>>> floating point can be applied just as normal. By the way, maybe there is >>>> even a standard comparable to IEEE 754 available? >>>> >>>> Just another possible way to proceed for solving this problem... >>> Is this http://en.wikipedia.org/wiki/Decimal_floating_point what you're >>> talking about? If so, it says that the IEEE spec is 854, and answers some >>> of my questions, but leaves out database support. >> A different spec: http://speleotrove.com/decimal/decarith.html >> And an implementation, which is used in CPython: >> http://www.bytereef.org/mpdecimal/index.html >> >> Regards, >> John Ralls >> >> >> _______________________________________________ >> gnucash-devel mailing list >> gnucash-devel@gnucash.org >> https://lists.gnucash.org/mailman/listinfo/gnucash-devel >> > > If you look at the problem from a perspective that if math or numeric > operations are somewhat costly in cpu cycles, therefore should be > minimized (without sacrificing accuracy), then the data design should be > such to minimize the number of numeric operations for common events. > > One way to greatly reduce the number of numeric operations might be to > save the value of the current balance for each account (either on a > recent date or simply including all posted transactions except newly > entered ones) explicitly in the data and use that as the starting > reference point for computation rather than zero in the far past. That > would mean somehow marking the newly entered transactions that have not > been included in the running balance calculations, of course, as well as > some other safeguards to detect possible errors, but it might give a > substantial net savings of cpu overhead. This might allow using a more > accurate numeric representation without an excessive overhead penalty. > > Just a thought.
That will be worth considering if balance computations show up as being a problem in profiling data. So far they don't. Regards, John Ralls _______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel