Related articles |
---|
Why is using single-precision slower than using double-precision zxu@monalisa.usc.edu (1994-11-23) |
Re: Why is using single-precision slower than using double-precision weaver@weitek.COM (1994-11-23) |
Re: Why is using single-precision slower than using double-precision meissner@osf.org (1994-11-23) |
Re: Why is using single-precision slower than using double-precision scott@cs.arizona.edu (1994-11-23) |
Re: Why is using single-precision slower than using double-precision joelw@convex.convex.com (1994-11-23) |
Re: Why is using single-precision slower than using double-precision koppel@omega.ee.lsu.edu (1994-11-23) |
Re: Why is using single-precision slower than using double-precision bevan@cs.man.ac.uk (1994-11-23) |
Re: Why is using single-precision slower than using double-precision luigi@paris.CS.Berkeley.EDU (1994-11-23) |
[11 later articles] |
Newsgroups: | comp.arch,comp.compilers |
From: | weaver@weitek.COM (Michael Gordon Weaver) |
Followup-To: | comp.compilers |
Keywords: | C, optimize |
Organization: | WEITEK Corporation, Sunnyvale CA |
References: | <3aqv5k$e27@monalisa.usc.edu> |
Date: | Wed, 23 Nov 1994 19:18:03 GMT |
zxu@monalisa.usc.edu (Zhiwei Xu) writes:
[why does this run slower with floats than with doubles?]
[ deleted ... except for inner loop: ]
> w = 1.0 / (double) N ;
> for(i=1;i<=N;i=i+1) {
> local = ( ((double) i) - 0.5 ) * w ;
> pi = pi + 4.0 / ( 1.0 + local * local ) ;
> }
>
I believe that on the machines you mention, double operations should be about
the same speed as float.
I investigated this on my workstation (Sun4), by looking at the assembly
and found that:
1. the constants (0.5, 4.0, 1.0) were stored as double
2. in the expressions, the float variables were converted
to double, rather than the constants being converted
to single.
It seems that the floating point constants are being treated the same way
double variables would be, regardless of the -fsingle option. I was able
the 'correct' code by replacing the constants (0.5,4.0,1.0) with
(0.5f,4.0f,1.0f), respectively. Then the program ran about the same speed
as the original, all double version.
Michael.
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.