> On Thursday 30 June 2005 10:35 am, Andriy Tkachuk wrote: > > I just checked the object code - you right, it almost the same: > > > > - bucket->ub_bucket[bucket->ub_cnt] = item; > > - 22b9: 0f bf 43 08 movswl 0x8(%ebx),%eax > > - 22bd: 8b 4d 0c mov 0xc(%ebp),%ecx > > - 22c0: 89 4c 83 0c mov %ecx,0xc(%ebx,%eax,4) > > - bucket->ub_cnt++; > > - 22c4: 8d 42 01 lea 0x1(%edx),%eax > > - 22c7: 66 89 43 08 mov %ax,0x8(%ebx) > > + bucket->ub_bucket[bucket->ub_cnt++] = item; > > + 22b9: 0f bf c2 movswl %dx,%eax > > + 22bc: 8b 4d 0c mov 0xc(%ebp),%ecx > > + 22bf: 89 4c 83 0c mov %ecx,0xc(%ebx,%eax,4) > > + 22c3: 8d 42 01 lea 0x1(%edx),%eax > > + 22c6: 66 89 43 08 mov %ax,0x8(%ebx) > > > > but still there is some minor difference in first line. > > I'm not familiar with assembler, can somebody explain > > whether this difference is assential or not? > > It just uses the stored value of the variable in %dx instead of loading it > from memory at 0x8(%ebx). When I compiled a simple test program here locally > I got identical object code though.
Probaly this is the reason of throughput increasing. I want to note, that all tests where made on my home workstation. And each new test was made with new kernel just after rebooting in ttyv withoud X-server. I think the noise was not assential. Ministats against second & third optimization showed this results: (for different number of sockets created & destroyed in one iteration) > /usr/src/tools/tools/ministat/ministat -c 99.5 sockloop_stat2_o1_sys_1000 > sockloop_stat2_o2_sys_1000 x sockloop_stat2_o1_sys_1000 + sockloop_stat2_o2_sys_1000 +--------------------------------------------------------------------------+ |+ + + x x x| ||______________A_____________| |_______M__A__________| | +--------------------------------------------------------------------------+ N Min Max Median Avg Stddev x 3 2.373 2.403 2.381 2.3856667 0.015534907 + 3 2.298 2.34 2.32 2.3193333 0.021007935 No difference proven at 99.5% confidence > /usr/src/tools/tools/ministat/ministat -c 99.5 sockloop_stat2_o1_sys_100 > sockloop_stat2_o2_sys_100 x sockloop_stat2_o1_sys_100 + sockloop_stat2_o2_sys_100 +--------------------------------------------------------------------------+ |+ + + x x x | | |___________________A__M_______________| |_______AM_____|| +--------------------------------------------------------------------------+ N Min Max Median Avg Stddev x 3 2.158 2.182 2.174 2.1713333 0.012220202 + 3 2.062 2.126 2.102 2.0966667 0.032331615 No difference proven at 99.5% confidence > /usr/src/tools/tools/ministat/ministat -c 99.5 sockloop_stat2_o1_sys_10 > sockloop_stat2_o2_sys_10 x sockloop_stat2_o1_sys_10 + sockloop_stat2_o2_sys_10 +--------------------------------------------------------------------------+ | + | | + + x xx | ||_M_A____| |________A___M___|| +--------------------------------------------------------------------------+ N Min Max Median Avg Stddev x 3 1.754 1.777 1.776 1.769 0.013 + 3 1.672 1.684 1.673 1.6763333 0.0066583281 Difference at 99.5% confidence -0.0926667 +/- 0.060488 -5.23836% +/- 3.41934% (Student's t, pooled s = 0.010328) > /usr/src/tools/tools/ministat/ministat -c 99.5 sockloop_stat2_o1_sys_1 > sockloop_stat2_o2_sys_1 x sockloop_stat2_o1_sys_1 + sockloop_stat2_o2_sys_1 +--------------------------------------------------------------------------+ |+ + + x x x| ||________AM_______| |____M_A_______| | +--------------------------------------------------------------------------+ N Min Max Median Avg Stddev x 3 1.938 1.993 1.953 1.9613333 0.028431204 + 3 1.722 1.785 1.759 1.7553333 0.031659648 Difference at 99.5% confidence -0.206 +/- 0.176222 -10.5031% +/- 8.98479% (Student's t, pooled s = 0.0300888) and for default confidence (95%) this results: > /usr/src/tools/tools/ministat/ministat sockloop_stat2_o1_sys_1000 > sockloop_stat2_o2_sys_1000 x sockloop_stat2_o1_sys_1000 + sockloop_stat2_o2_sys_1000 +--------------------------------------------------------------------------+ |+ + + x x x| ||______________A_____________| |_______M__A__________| | +--------------------------------------------------------------------------+ N Min Max Median Avg Stddev x 3 2.373 2.403 2.381 2.3856667 0.015534907 + 3 2.298 2.34 2.32 2.3193333 0.021007935 Difference at 95.0% confidence -0.0663333 +/- 0.0418758 -2.78049% +/- 1.75531% (Student's t, pooled s = 0.0184752) > /usr/src/tools/tools/ministat/ministat sockloop_stat2_o1_sys_100 > sockloop_stat2_o2_sys_100 x sockloop_stat2_o1_sys_100 + sockloop_stat2_o2_sys_100 +--------------------------------------------------------------------------+ |+ + + x x x | | |___________________A__M_______________| |_______AM_____|| +--------------------------------------------------------------------------+ N Min Max Median Avg Stddev x 3 2.158 2.182 2.174 2.1713333 0.012220202 + 3 2.062 2.126 2.102 2.0966667 0.032331615 Difference at 95.0% confidence -0.0746667 +/- 0.0553965 -3.43875% +/- 2.55127% (Student's t, pooled s = 0.0244404) Resume: the difference is present and it is more for smaller deviations in balanced allocs & frees. It is up to 10% if deviation is minimal. -- Andriy Tkachuk. _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"