This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH: Optimize memcmp for ia32


On Mon, Feb 09, 2004 at 10:37:03AM -0800, Ulrich Drepper wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> H. J. Lu wrote:
> 
> > I don't think anyone will be happy to run the current glibc on anything
> > less than Pentium Pro.
> 
> That's unfortunately not true,
> 
> 
> > We can investigate how often it is called in gcc. But it is used by
> > some applications and my patch will help them.
> 
> We can?  You must know what kind of string length etc are used to write
> improvements.  If you don't have the data your "improvements" might be
> bad for all the interesting cases.
> 

On Prescott, I got
			        old	old		new	speedup
			simple_memcmp  memcmp		memcmp

Length    1, alignment  1/ 1    28      161     28      21      666.667
Length    1, alignment  1/ 1    21      161     28      21      666.667
Length    1, alignment  1/ 1    28      161     21      21      666.667
Length    2, alignment  2/ 2    28      168     28      35      380
Length    2, alignment  2/ 2    28      168     28      35      380
Length    2, alignment  2/ 2    28      168     28      35      380
Length    3, alignment  3/ 3    35      168     35      35      380
Length    3, alignment  3/ 3    28      175     28      35      400
Length    3, alignment  3/ 3    35      175     35      35      400
Length    4, alignment  4/ 4    35      175     42      28      525
Length    4, alignment  4/ 4    35      175     42      35      400
Length    4, alignment  4/ 4    35      175     35      35      400
Length    5, alignment  5/ 5    49      175     49      28      525
Length    5, alignment  5/ 5    42      182     49      35      420
Length    5, alignment  5/ 5    42      182     42      35      420
Length    6, alignment  6/ 6    56      182     49      28      550
Length    6, alignment  6/ 6    49      189     56      35      440
Length    6, alignment  6/ 6    49      189     56      35      440
Length    7, alignment  7/ 7    56      189     56      28      575
Length    7, alignment  7/ 7    56      189     56      35      440
Length    7, alignment  7/ 7    56      189     56      35      440
Length    8, alignment  0/ 0    63      189     63      28      575
Length    8, alignment  0/ 0    56      196     56      35      460
Length    8, alignment  0/ 0    56      196     56      35      460
Length    9, alignment  1/ 1    63      196     63      28      600
Length    9, alignment  1/ 1    63      196     63      35      460
Length    9, alignment  1/ 1    63      196     63      35      460
Length   10, alignment  2/ 2    119     196     77      35      460
Length   10, alignment  2/ 2    70      203     70      35      480
Length   10, alignment  2/ 2    70      203     70      35      480
Length   11, alignment  3/ 3    112     203     77      35      480
Length   11, alignment  3/ 3    112     203     70      35      480
Length   11, alignment  3/ 3    112     203     77      35      480
Length   12, alignment  4/ 4    119     203     119     28      625
Length   12, alignment  4/ 4    119     210     84      35      500
Length   12, alignment  4/ 4    119     210     77      35      500
Length   13, alignment  5/ 5    119     210     119     35      500
Length   13, alignment  5/ 5    119     217     119     35      520
Length   13, alignment  5/ 5    119     217     119     35      520
Length   14, alignment  6/ 6    126     217     133     28      675
Length   14, alignment  6/ 6    126     224     126     35      540
Length   14, alignment  6/ 6    126     217     126     35      520
Length   15, alignment  7/ 7    133     217     133     35      520
Length   15, alignment  7/ 7    133     224     140     35      540
Length   15, alignment  7/ 7    133     224     133     35      540
Length    1, alignment  0/ 0    21      161     21      21      666.667
Length    1, alignment  0/ 0    28      168     21      21      700
Length    1, alignment  0/ 0    21      161     21      21      666.667
Length    2, alignment  0/ 0    28      168     35      28      500
Length    2, alignment  0/ 0    28      168     28      35      380
Length    2, alignment  0/ 0    28      168     28      28      500
Length    3, alignment  0/ 0    35      168     35      35      380
Length    3, alignment  0/ 0    28      175     35      35      400
Length    3, alignment  0/ 0    35      175     35      35      400
Length    4, alignment  0/ 0    35      175     42      28      525
Length    4, alignment  0/ 0    35      175     42      35      400
Length    4, alignment  0/ 0    35      175     42      28      525
Length    5, alignment  0/ 0    84      175     49      28      525
Length    5, alignment  0/ 0    42      182     49      35      420
Length    5, alignment  0/ 0    42      182     49      35      420
Length    6, alignment  0/ 0    56      182     49      28      550
Length    6, alignment  0/ 0    49      189     56      35      440
Length    6, alignment  0/ 0    49      189     56      35      440
Length    7, alignment  0/ 0    56      189     56      28      575
Length    7, alignment  0/ 0    49      189     56      35      440
Length    7, alignment  0/ 0    49      189     56      35      440
Length    8, alignment  0/ 0    63      189     63      35      440
Length    8, alignment  0/ 0    56      196     63      35      460
Length    8, alignment  0/ 0    56      196     63      35      460
Length    9, alignment  0/ 0    63      196     70      28      600
Length    9, alignment  0/ 0    63      196     63      35      460
Length    9, alignment  0/ 0    63      196     63      35      460
Length   10, alignment  0/ 0    70      196     77      35      460
Length   10, alignment  0/ 0    70      203     70      35      480
Length   10, alignment  0/ 0    70      203     70      35      480
Length   11, alignment  0/ 0    112     203     84      35      480
Length   11, alignment  0/ 0    70      203     84      35      480
Length   11, alignment  0/ 0    70      203     70      35      480
Length   12, alignment  0/ 0    119     203     119     35      480
Length   12, alignment  0/ 0    119     210     84      35      500
Length   12, alignment  0/ 0    119     210     77      35      500
Length   13, alignment  0/ 0    126     210     126     28      650
Length   13, alignment  0/ 0    119     217     119     35      520
Length   13, alignment  0/ 0    119     217     119     35      520
Length   14, alignment  0/ 0    133     217     126     35      520
Length   14, alignment  0/ 0    126     217     126     35      520
Length   14, alignment  0/ 0    126     217     119     35      520
Length   15, alignment  0/ 0    133     217     133     35      520
Length   15, alignment  0/ 0    133     224     133     35      540
Length   15, alignment  0/ 0    133     224     133     35      540
Length    4, alignment  0/ 0    35      175     35      28      525
Length    4, alignment  0/ 0    35      175     35      28      525
Length    4, alignment  0/ 0    35      175     35      28      525
Length   32, alignment  0/ 0    231     287     231     35      720
Length   32, alignment  7/ 2    231     287     231     35      720
Length   32, alignment  0/ 0    231     287     231     35      720
Length   32, alignment  0/ 0    231     287     224     35      720
Length    8, alignment  0/ 0    63      189     63      28      575
Length    8, alignment  0/ 0    56      196     56      35      460
Length    8, alignment  0/ 0    56      196     56      35      460
Length   64, alignment  0/ 0    420     413     420     56      637.5
Length   64, alignment  6/ 4    420     413     420     56      637.5
Length   64, alignment  0/ 0    420     420     420     63      566.667
Length   64, alignment  0/ 0    420     420     420     63      566.667
Length   16, alignment  0/ 0    140     224     140     35      540
Length   16, alignment  0/ 0    133     224     133     35      540
Length   16, alignment  0/ 0    140     224     140     35      540
Length  128, alignment  0/ 0    805     672     812     140     380
Length  128, alignment  5/ 6    805     672     812     189     255.556
Length  128, alignment  0/ 0    805     672     805     154     336.364
Length  128, alignment  0/ 0    805     672     805     154     336.364
Length   32, alignment  0/ 0    231     287     231     35      720
Length   32, alignment  0/ 0    224     287     224     35      720
Length   32, alignment  0/ 0    231     287     224     35      720
Length  256, alignment  0/ 0    1575    1183    1575    203     482.759
Length  256, alignment  4/ 0    1575    1183    1575    203     482.759
Length  256, alignment  0/ 0    1568    1183    1568    217     445.161
Length  256, alignment  0/ 0    1568    1183    1568    217     445.161
Length   64, alignment  0/ 0    420     420     420     56      650
Length   64, alignment  0/ 0    420     420     420     63      566.667
Length   64, alignment  0/ 0    420     420     420     63      566.667
Length  512, alignment  0/ 0    3108    2205    3108    336     556.25
Length  512, alignment  3/ 2    3108    2205    3108    553     298.734
Length  512, alignment  0/ 0    3108    2212    3108    343     544.898
Length  512, alignment  0/ 0    3108    2212    3108    343     544.898
Length  128, alignment  0/ 0    805     672     812     140     380
Length  128, alignment  0/ 0    805     672     805     154     336.364
Length  128, alignment  0/ 0    805     672     805     154     336.364
Length 1024, alignment  0/ 0    6181    4256    6181    595     615.294
Length 1024, alignment  2/ 4    6181    4256    6181    882     382.54
Length 1024, alignment  0/ 0    6181    4256    6181    609     598.851
Length 1024, alignment  0/ 0    6181    4256    6181    609     598.851
Length  256, alignment  0/ 0    1575    1183    1575    203     482.759
Length  256, alignment  0/ 0    1568    1183    1575    217     445.161
Length  256, alignment  0/ 0    1568    1183    1575    217     445.161
Length 2048, alignment  0/ 0    12327   8351    12327   1120    645.625
Length 2048, alignment  1/ 6    10290   8351    12327   1995    318.596
Length 2048, alignment  0/ 0    10283   8351    12327   1141    631.902
Length 2048, alignment  0/ 0    10283   8351    12320   1141    631.902
Length  512, alignment  0/ 0    2611    2205    3108    336     556.25
Length  512, alignment  0/ 0    2604    2212    3108    343     544.898
Length  512, alignment  0/ 0    2604    2212    3108    343     544.898
Length 4096, alignment  0/ 0    20524   16541   24612   2177    659.807
Length 4096, alignment  0/ 0    20524   16548   24612   2177    660.129
Length 4096, alignment  0/ 0    20524   16548   24612   2184    657.692
Length 4096, alignment  0/ 0    20524   16548   24612   2184    657.692
Length 1024, alignment  0/ 0    5166    4256    6181    595     615.294
Length 1024, alignment  0/ 0    5159    4256    6188    609     598.851
Length 1024, alignment  0/ 0    5159    4256    6181    609     598.851
Length   16, alignment  1/ 2    133     224     140     35      540
Length   16, alignment  1/ 2    133     224     140     35      540
Length   16, alignment  1/ 2    140     224     140     35      540
Length   32, alignment  2/ 4    210     287     231     42      583.333
Length   32, alignment  2/ 4    203     287     231     42      583.333
Length   32, alignment  2/ 4    203     287     231     35      720
Length   64, alignment  3/ 6    371     413     420     63      555.556
Length   64, alignment  3/ 6    364     420     420     84      400
Length   64, alignment  3/ 6    364     420     420     84      400
Length  128, alignment  4/ 0    686     672     805     140     380
Length  128, alignment  4/ 0    679     672     805     154     336.364
Length  128, alignment  4/ 0    686     672     805     154     336.364
Length  256, alignment  5/ 2    1330    1183    1575    315     275.556
Length  256, alignment  5/ 2    1323    1183    1568    357     231.373
Length  256, alignment  5/ 2    1260    1183    1568    364     225
Length  512, alignment  6/ 4    2597    2205    3108    476     363.235
Length  512, alignment  6/ 4    2450    2212    3108    497     345.07
Length  512, alignment  6/ 4    2611    2212    3108    497     345.07
Length 1024, alignment  7/ 6    5166    4256    6181    1036    310.811
Length 1024, alignment  7/ 6    5166    4256    6181    1050    305.333
Length 1024, alignment  7/ 6    5166    4256    6181    1043    308.054

I got similar results on other processors.


H.J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]