Why overloaded arithmetic operations are so slow?
- To: mathgroup at smc.vnet.net
- Subject: [mg49729] Why overloaded arithmetic operations are so slow?
- From: Sergey Afonin <serg at msu.ru>
- Date: Thu, 29 Jul 2004 07:45:32 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Hi all.
In "The Mathematica Book" (2.5.10) one can read that overloading
standard arithmetic operations, such as Plus, for user-defined data is
"much more convenient" than defining specific functions. But how this
can be done efficiently? I want to define type of the form zz[Number]
with the addition
zz /: Plus[z1_zz, z2_zz] := zz[First[z1] + First[z2]]
In fact, zz are "normal" numbers. The following statement prints out
the time spent for addition wrt the number of elements...
Do[Print[Timing[Plus @@ Table[zz[10^(i - 1)], {i, n}]]], {n, 15}]
{0. Second, zz[1]}
{0. Second, zz[11]}
{0. Second, zz[111]}
{0. Second, zz[1111]}
{0. Second, zz[11111]}
{0. Second, zz[111111]}
{0. Second, zz[1111111]}
{0.02 Second, zz[11111111]}
{0.03 Second, zz[111111111]}
{0.12 Second, zz[1111111111]}
{0.35 Second, zz[11111111111]}
{1.07 Second, zz[111111111111]}
{3.31 Second, zz[1111111111111]}
{10.07 Second, zz[11111111111111]}
{30.81 Second, zz[111111111111111]}
Is it normal?
Best regards,
Sergey Afonin
- Follow-Ups:
- Re: Why overloaded arithmetic operations are so slow?
- From: János <janos.lobb@yale.edu>
- Re: Why overloaded arithmetic operations are so slow?