[Maurilio]
latest code, OS/2 GCC, HB_FM_STATISTICS_OFF, PIV HT 3.6GHz, SMP Kernel. ST ============================================================ total application time: 52.85 total real time: 52.85 MT ============================================================ total application time: 70.91 total real time: 70.92
[Maurilio]
Ok, here they are, same hardware, xharbour at $Id: ChangeLog,v 1.6182 2008/08/01 09:41:14 marchuet Exp $ MT total application time: 214.79 ST total application time: 95.18
[Przemek]
I expected worse results then Harbour ones but I didn't expect such big difference and such big MT overhead. xHarbour does not even use protection for complex variable reference counters in OS2 builds - Walter implemented them only for MS-Windows. In my Linux box the difference is smaller though I'm using a little bit modified xHarbour version with working native TLS support. I'll made tests with current clean CVS.
I see many surprises: a) PIV HT 3.6GHz, SMP Kernel. My hardware for OS/2 tests are AMD Athlon 2200+ 2.0 Ghz 1 Gb RAM This Athlon never are ahead of an PIV 2.2 GHz, my "old" PIV 3.3 GHz HT was allways near double speed than Athlon in any test So something is wrong: results for PIV HT 3.6 Ghz should be better than Athlon 2200+ at least in half of time Or your machine is heavily loaded, or low RAM or something else, but must be better b) A very big difference between Harbour and xHarbour in both ST and MT c) A very big difference between ST and MT in xHarbour As I have xHarbour MT under OS/2 (yes, Maurilio told me how to build it) I made same tests. xHarbour around 14 August 2008 speedtst.prg Harbour ======= ST total application time: 47.13 total real time: 47.14 MT total application time: 51.98 total real time: 51.98 xHarbour ======== ST total application time: 71.52 total real time: 71.52 MT total application time: 119.68 total real time: 119.69 Again, results should be greater than those of Maurilio hardware Complete results for xHarbour are below David Macias ------------------------- xHarbour ST Startup loop to increase CPU clock... 09/25/08 15:05:22 xHarbour build 1.1.0 Intl. (SimpLex) (Rev. 6192), OS/2 4.50 ARR_LEN = 16 N_LOOPS = 1000000 empty loops overhead = 0.23 CPU usage -> secondsCPU() c:=L_C -> 0.15 n:=L_N -> 0.13 d:=L_D -> 0.13 c:=M_C -> 0.16 n:=M_N -> 0.14 d:=M_D -> 0.14 (sh) c:=F_C -> 0.64 (sh) n:=F_N -> 0.42 (sh) d:=F_D -> 0.29 (ex) c:=F_C -> 0.66 (ex) n:=F_N -> 0.35 (ex) d:=F_D -> 0.28 n:=o:GenCode -> 0.57 n:=o[8] -> 0.29 round(i/1000,2) -> 1.00 str(i/1000) -> 2.08 val(a3[i%ARR_LEN+1]) -> 1.11 dtos(j+i%10000-5000) -> 1.16 eval({||i%ARR_LEN}) -> 0.82 eval({|x|x%ARR_LEN},i) -> 0.88 eval({|x|f1(x)},i) -> 1.44 &('f1('+str(i)+')') -> 10.85 eval([&('{|x|f1(x)}')]) -> 1.43 j := valtype(a)+valtype(i) -> 1.76 j := str(i%100,2) $ a2[i%ARR_LEN+1] -> 2.41 j := val(a2[i%ARR_LEN+1]) -> 1.30 j := a2[i%ARR_LEN+1] == s -> 0.71 j := a2[i%ARR_LEN+1] = s -> 0.71 j := a2[i%ARR_LEN+1] >= s -> 0.70 j := a2[i%ARR_LEN+1] < s -> 0.69 aadd(aa,{i,j,s,a,a2,t,bc}) -> 2.94 f0() -> 0.67 f1(i) -> 0.80 f2(c[8]) -> 0.76 f2(c[40000]) -> 0.74 f2(@c[40000]) -> 0.71 f2(c[40000]); c2:=c -> 0.89 f2(@c[40000]); c2:=c -> 0.86 f3(a,a2,c,i,j,t,bc) -> 1.23 f2(a2) -> 0.77 s:=f4() -> 2.16 s:=f5() -> 1.58 ascan(a,i%ARR_LEN) -> 1.08 ascan(a2,c+chr(i%64+64)) -> 2.75 ascan(a,{|x|x==i%ARR_LEN}) -> 9.86 ============================================================ total application time: 71.52 total real time: 71.52 ------------------------- xHarbour MT Startup loop to increase CPU clock... 09/25/08 15:06:48 xHarbour build 1.1.0 Intl. (SimpLex) (Rev. 6192) (MT), OS/2 4.50 ARR_LEN = 16 N_LOOPS = 1000000 empty loops overhead = 0.28 CPU usage -> secondsCPU() c:=L_C -> 0.18 n:=L_N -> 0.15 d:=L_D -> 0.15 c:=M_C -> 3.11 n:=M_N -> 3.08 d:=M_D -> 3.06 (sh) c:=F_C -> 0.65 (sh) n:=F_N -> 0.40 (sh) d:=F_D -> 0.29 (ex) c:=F_C -> 0.69 (ex) n:=F_N -> 0.42 (ex) d:=F_D -> 0.32 n:=o:GenCode -> 0.71 n:=o[8] -> 0.33 round(i/1000,2) -> 0.90 str(i/1000) -> 1.89 val(a3[i%ARR_LEN+1]) -> 1.55 dtos(j+i%10000-5000) -> 1.26 eval({||i%ARR_LEN}) -> 0.92 eval({|x|x%ARR_LEN},i) -> 0.98 eval({|x|f1(x)},i) -> 3.07 &('f1('+str(i)+')') -> 19.44 eval([&('{|x|f1(x)}')]) -> 3.10 j := valtype(a)+valtype(i) -> 1.85 j := str(i%100,2) $ a2[i%ARR_LEN+1] -> 2.76 j := val(a2[i%ARR_LEN+1]) -> 1.68 j := a2[i%ARR_LEN+1] == s -> 0.78 j := a2[i%ARR_LEN+1] = s -> 0.79 j := a2[i%ARR_LEN+1] >= s -> 0.78 j := a2[i%ARR_LEN+1] < s -> 0.78 aadd(aa,{i,j,s,a,a2,t,bc}) -> 6.22 f0() -> 2.18 f1(i) -> 2.31 f2(c[8]) -> 2.23 f2(c[40000]) -> 2.23 f2(@c[40000]) -> 2.18 f2(c[40000]); c2:=c -> 2.42 f2(@c[40000]); c2:=c -> 2.38 f3(a,a2,c,i,j,t,bc) -> 2.78 f2(a2) -> 2.23 s:=f4() -> 3.76 s:=f5() -> 3.19 ascan(a,i%ARR_LEN) -> 1.06 ascan(a2,c+chr(i%64+64)) -> 2.78 ascan(a,{|x|x==i%ARR_LEN}) -> 13.07 ============================================================ total application time: 119.68 total real time: 119.69 ---------------- _______________________________________________ Harbour mailing list Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour