Newsgroups: comp.sys.sgi Path: utzoo!utgpu!jarvis.csri.toronto.edu!dgp.toronto.edu!ckchee From: ckchee@dgp.toronto.edu (Chuan Chee) Subject: division within a loop Message-ID: <1989Jun25.171557.25026@jarvis.csri.toronto.edu> Keywords: division loop Organization: University of Toronto, CSRI Distribution: na I am running on a IRIS 4D/20 (Release 4D1-3.14711181642). It seems that if I have a division as the only operation within a loop, it is EXTREMELY SLOW! The following shows data that I collected and the program I used to test the operations. I even looked at the assembler output to see that it is doing what was intended. No one else was on the system. ----- main() { int i; double a = 1e+10; for( i = 0; i < 100000; i++ ){ a /= 1.1; /* operation goes on this line */ } } ------ On a IRIS 4D/20 cc -O2 timing.c -lm time a.out 100,000 divisions "a /= 1.1;" 104.5u 0.5s 1:45.06 100% 104.5u 0.1s 1:44.68 100% 104.4u 0.4s 1:44.87 100% 104.4u 0.5s 1:45.00 100% 100,000 multiplications "a *= 1.1;" 0.3u 0.1s 0:00.50 100% 0.3u 0.1s 0:00.56 100% 100,000 additions "a += 1.1;" 0.2u 0.1s 0:00.37 100% 0.1u 0.1s 0:00.37 100% 100,000 divisions and additions in same loop "a /= 1.1; a += 1.1;" 1.0u 0.2s 0:01.31 100% 1.0u 0.2s 0:01.31 100% 100,000 divisions and additions in separate loops within same program 111.5u 0.5s 1:52.00 100% 111.4u 0.4s 1:51.87 100% 100,000 two consecutive divisions "a /= 1.1; a /= 1.1;" 220.0u 0.6s 3:40.75 100% 220.4u 0.6s 3:41.06 100% 100,000 sqrt() "a = sqrt(1.1);" 7.3u 0.1s 0:07.56 100% 7.4u 0.1s 0:07.56 100% 7.4u 0.1s 0:07.56 100% 100,000 exp() "a = exp(1.1);" 6.0u 0.2s 0:06.31 100% 6.0u 0.1s 0:06.25 100% ----- By the way, the Iris-4D/20 is not the only computer that does this. A SUN-3/280 with fpa (compile option) also exhibits this symptom. BUT, strangely enought, the SAME SUN-3/280 with 68881 compile option does not! Neither does a SUN-3/60 with 68881. Is there something wrong with these coprocessors? ...Chuan Chee ckchee@dgp.utoronto.ca (cdnnet) ckchee@dgp.toronto.edu (internet) ckchee@dgp.utoronto (bitnet)