double vs real

John Colvin john.loughran.colvin at gmail.com
Fri May 31 12:08:04 PDT 2013


On Friday, 31 May 2013 at 16:17:28 UTC, Ali Çehreli wrote:
> On 05/31/2013 04:28 AM, Shriramana Sharma wrote:
>
> > On Fri, May 31, 2013 at 4:31 PM, Timon Gehr
> <timon.gehr at gmx.ch> wrote:
> >>
> >> If double uses xmm registers and real uses the fpu registers
> (as is standard
> >> on x64), then double multiplication has twice the throughput
> of real
> >> multiplication on recent intel microarchitectures.
> >
> > Hi can you clarify that? I'm interested because I'm running a
> 64 bit
> > system. What does twice the throughput mean? double is faster?
>
> I am interested in the answer too.

int, long, float, double etc. are all of size 2^n. That means 
they can be neatly packed in to SIMD registers (e.g. XMM0-XMM15 
on x86_64) and can be operated on in parallel, providing very 
large speedups in some cases. real, on the other hand - on x86/64 
- is 80bits and as such doesn't fit in to the same scheme.

There are also differences to do with calling conventions that 
can make different types slower/faster, but this is very 
dependant on the exact usage and normally only significantly 
affects small functions that can't be inlined IME.


More information about the Digitalmars-d-learn mailing list