Hi, On Wed, 2009-11-11 at 13:15 +0000, Maciej W. Rozycki wrote: > On Wed, 11 Nov 2009, Wu Zhangjin wrote: > > > > -mlong-calls really degrades performance. I have seen things like 6% > > > drop in network packet forwarding rates with -mlong-calls. > > > > > > > so much drop? seems only two instructions added for it: lui, addi. from > > this view point, I think the -fno-omit-frame-pointer(add, sd, move...) > > will also bring with much drop. > > No, register jumps cannot be predicted -- this is where the performance > goes on any serious processor -- the two extra instructions are nothing > compared to that. OTOH frame pointer calculations are pure arithmetic, so > you only lose time incurred by the instructions themselves. Yes, I only mean the -mlong-calls and the original -mno-long-calls with -pg. The orignal one looks like this: move ra, at jal _mcount The new one with -mlong-calls looks like this: lui v1, HI_16BIT_OF_MCOUNT addiu v1, v1, LOW_16BIT_OF_MCOUNT move ra, at jalr v1 both of them have a "jump" instruciton, so, only two lui, addiu added for -mlong-calls ;) what about the difference between that "jal _mcount" and "jalr v1"? Regards, Wu Zhangjin