Mateusz Rukowicz wrote:
>Hi! > > I've been working on C decimal project during gSoC 2006. After year >of idling (I had extremely busy first year on University, but well, most >of us are extremely busy) I decided, that I will handle further >developing (there is still much development needed, and updating to most >recent standard is just the beginning). I understand, that chances of >merging C Decimal with main tree are much lower than year ago, so I >would like to know if there is still interest in C version of Decimal. >If so - should I write PEP, or just code and 'we'll see later'? > >I've made a little benchmark - given loan amount, assets and months that >it's meant to be payed off, find minimal monthly loan cost (It's just >first idea that came to me for use Decimal in financial 'application' >:>) [This solution has complexity O(log(amount) * months) which is far >from optimal, but it's meant to benchmark Decimal, not python itself]. > >Code: > >from _decimal import * >import sys >gc = getcontext(); > >def check(loan, percent, monthly): > ret = 0 > mult = 1 + (percent / 1200) > if (loan - monthly) * mult >= loan: > return -1 #you cannot payoff loan ;( > > while loan > 0: > loan = loan - monthly > loan = loan * mult > ret += 1 > return ret > >def minimize_monthly(loan, percent, months): > lower = Decimal(0) > upper = Decimal(loan) > > while(upper > lower + Decimal("1e-3")): > mid = (upper + lower)/2 > ret = check(loan, percent, mid) > if(ret > months or ret == -1): > lower = mid > else: > upper = mid > > > return lower > > > >gc.prec = int(sys.argv[4]) >gc.rounding = ROUND_UP >print minimize_monthly(Decimal(sys.argv[1]), Decimal(sys.argv[2]), >int(sys.argv[3])) > >and timings (1mln loan, for 15 years, 2% year assets, and precision = 10 >:>): >[EMAIL PROTECTED]:~/programy/python/decimal/decimal-c$ time >../../pyth/python/python loan.py 1000000 2 180 10 >6424.37955 > >real 0m0.068s >user 0m0.064s >sys 0m0.004s >[EMAIL PROTECTED]:~/programy/python/decimal/decimal-c$ time >../../pyth/python/python loan2.py 1000000 2 180 10 >6424.37955 > >real 0m2.168s >user 0m2.148s >sys 0m0.016s > >Please don't misunderstand me - I don't want to show python Decimal is >slow, I want to show that C Decimal is worth effort. I am also aware of >simplicity of this benchmark. (This python have been of course compiled >with -O3). > >Best regards, >Mateusz Rukowicz. >_______________________________________________ >Python-Dev mailing list >Python-Dev@python.org >http://mail.python.org/mailman/listinfo/python-dev >Unsubscribe: >http://mail.python.org/mailman/options/python-dev/mateusz.rukowicz%40vp.pl > > > Sorry for two messages, thunderbird told me first message hadn't been send. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com