[EMAIL PROTECTED] wrote:

>     Steve> By these statistics I think the answer to the original
>     question Steve> is clearly "no" in the general case.
> 
> As someone else (Guido?) pointed out, the literal case isn't all that
> interesting.  I modified floatobject.c to track a few interesting
> floating point values:
> 
>     static unsigned int nfloats[5] = {
>             0, /* -1.0 */
>             0, /*  0.0 */
>             0, /* +1.0 */
>             0, /* everything else */
>             0, /* whole numbers from -10.0 ... 10.0 */
>     };
> 
>     PyObject *
>     PyFloat_FromDouble(double fval)
>     {
>             register PyFloatObject *op;
>             if (free_list == NULL) {
>                     if ((free_list = fill_free_list()) == NULL)
>                             return NULL;
>             }
> 
>             if (fval == 0.0) nfloats[1]++;
>             else if (fval == 1.0) nfloats[2]++;
>             else if (fval == -1.0) nfloats[0]++;
>             else nfloats[3]++;
> 
>             if (fval >= -10.0 && fval <= 10.0 && (int)fval == fval) {
>                     nfloats[4]++;
>             }

This doesn't actually give us a very useful indication of potential
memory savings. What I think would be more useful is tracking the
maximum simultaneous count of each value i.e. what the maximum refcount
would have been if they were shared.

Tim Delaney
_______________________________________________
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

Reply via email to