This is the mail archive of the libc-alpha@sourceware.org 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] ARM: Add optimized ARMv7 strcmp implementation


On 24/04/14 15:42, Joseph S. Myers wrote:
> On Wed, 23 Apr 2014, Will Newton wrote:
> 
>> Add an optimized implementation of strcmp for ARMv7-A cores. This
>> implementation is significantly faster than the current generic C
>> implementation, particularly for strings of 16 bytes and longer.
> 
> Could you please describe the testing (at least the string/ tests should 
> have been run for both endiannesses) and be more specific about 
> "significantly faster" (benchmark results - on specific identified 
> hardware - using glibc's benchtests are desirable for such string function 
> tests, in addition to any other benchmarks you may have used if glibc's 
> benchtests aren't useful for the cases of interest)?

These are the improvements for a production board with cortex-a15.  For
very short strings there's a fair amount of noise in the measurements,
but the regressions are generally very small, while the improvements can
be significant. Yes, there are cases where the new code is more than
three times faster.

R.


Length	1	alignment	1/1:	 15.63%
Length	1	alignment	1/1:	 1.61%
Length	1	alignment	1/1:	-0.04%
Length	2	alignment	2/2:	 39.45%
Length	2	alignment	2/2:	 51.49%
Length	2	alignment	2/2:	 47.71%
Length	3	alignment	3/3:	-1.46%
Length	3	alignment	3/3:	 47.09%
Length	3	alignment	3/3:	 48.54%
Length	4	alignment	4/4:	-7.89%
Length	4	alignment	4/4:	 0.00%
Length	4	alignment	4/4:	-0.03%
Length	5	alignment	5/5:	-4.09%
Length	5	alignment	5/5:	-4.11%
Length	5	alignment	5/5:	-1.42%
Length	6	alignment	6/6:	 4.17%
Length	6	alignment	6/6:	 2.81%
Length	6	alignment	6/6:	 4.29%
Length	7	alignment	7/7:	 6.93%
Length	7	alignment	7/7:	 4.19%
Length	7	alignment	7/7:	 2.84%
Length	8	alignment	8/8:	 12.86%
Length	8	alignment	8/8:	 15.40%
Length	8	alignment	8/8:	 13.88%
Length	9	alignment	9/9:	 37.50%
Length	9	alignment	9/9:	 59.20%
Length	9	alignment	9/9:	 20.03%
Length	10	alignment	10/10:	 52.00%
Length	10	alignment	10/10:	 11.45%
Length	10	alignment	10/10:	 12.82%
Length	11	alignment	11/11:	 58.13%
Length	11	alignment	11/11:	 67.18%
Length	11	alignment	11/11:	 15.93%
Length	12	alignment	12/12:	 50.61%
Length	12	alignment	12/12:	 13.90%
Length	12	alignment	12/12:	 18.85%
Length	13	alignment	13/13:	 60.85%
Length	13	alignment	13/13:	 13.68%
Length	13	alignment	13/13:	 10.69%
Length	14	alignment	14/14:	 66.23%
Length	14	alignment	14/14:	 16.44%
Length	14	alignment	14/14:	 16.48%
Length	15	alignment	15/15:	 72.64%
Length	15	alignment	15/15:	 72.58%
Length	15	alignment	15/15:	 72.58%
Length	16	alignment	16/16:	 70.66%
Length	16	alignment	16/16:	 84.07%
Length	16	alignment	16/16:	 84.07%
Length	17	alignment	17/17:	 68.39%
Length	17	alignment	17/17:	 80.53%
Length	17	alignment	17/17:	 76.75%
Length	18	alignment	18/18:	 74.99%
Length	18	alignment	18/18:	 83.33%
Length	18	alignment	18/18:	 84.73%
Length	19	alignment	19/19:	 80.86%
Length	19	alignment	19/19:	 82.18%
Length	19	alignment	19/19:	 87.50%
Length	20	alignment	20/20:	 35.61%
Length	20	alignment	20/20:	 83.75%
Length	20	alignment	20/20:	 81.31%
Length	21	alignment	21/21:	 49.39%
Length	21	alignment	21/21:	 69.13%
Length	21	alignment	21/21:	 71.59%
Length	22	alignment	22/22:	 44.69%
Length	22	alignment	22/22:	 63.97%
Length	22	alignment	22/22:	 73.16%
Length	23	alignment	23/23:	 51.82%
Length	23	alignment	23/23:	 79.02%
Length	23	alignment	23/23:	 79.79%
Length	24	alignment	24/24:	 62.08%
Length	24	alignment	24/24:	 87.17%
Length	24	alignment	24/24:	 93.34%
Length	25	alignment	25/25:	 48.28%
Length	25	alignment	25/25:	 68.28%
Length	25	alignment	25/25:	 80.27%
Length	26	alignment	26/26:	 55.85%
Length	26	alignment	26/26:	 76.21%
Length	26	alignment	26/26:	 79.79%
Length	27	alignment	27/27:	 75.34%
Length	27	alignment	27/27:	 85.72%
Length	27	alignment	27/27:	 80.02%
Length	28	alignment	28/28:	 52.72%
Length	28	alignment	28/28:	 69.16%
Length	28	alignment	28/28:	 65.85%
Length	29	alignment	29/29:	 65.49%
Length	29	alignment	29/29:	 60.48%
Length	29	alignment	29/29:	 67.50%
Length	30	alignment	30/30:	 67.02%
Length	30	alignment	30/30:	 71.98%
Length	30	alignment	30/30:	 71.11%
Length	31	alignment	31/31:	 66.29%
Length	31	alignment	31/31:	 71.43%
Length	31	alignment	31/31:	 70.23%
Length	4	alignment	0/0:	 4.48%
Length	4	alignment	0/0:	 14.90%
Length	4	alignment	0/0:	 9.19%
Length	4	alignment	0/0:	 9.38%
Length	4	alignment	0/0:	-14.30%
Length	4	alignment	0/0:	 4.69%
Length	4	alignment	0/1:	-17.09%
Length	4	alignment	1/2:	-10.69%
Length	8	alignment	0/0:	 4.05%
Length	8	alignment	0/0:	 8.70%
Length	8	alignment	0/0:	 14.72%
Length	8	alignment	0/0:	 14.98%
Length	8	alignment	0/0:	 22.73%
Length	8	alignment	0/0:	 9.09%
Length	8	alignment	0/2:	 10.59%
Length	8	alignment	2/3:	 29.27%
Length	16	alignment	0/0:	 44.31%
Length	16	alignment	0/0:	 105.97%
Length	16	alignment	0/0:	 91.31%
Length	16	alignment	0/0:	 75.53%
Length	16	alignment	0/0:	 46.52%
Length	16	alignment	0/0:	 60.55%
Length	16	alignment	0/3:	 1.46%
Length	16	alignment	3/4:	 7.76%
Length	32	alignment	0/0:	 14.62%
Length	32	alignment	0/0:	 100.03%
Length	32	alignment	0/0:	 98.84%
Length	32	alignment	0/0:	 34.27%
Length	32	alignment	0/0:	 24.78%
Length	32	alignment	0/0:	 81.48%
Length	32	alignment	0/4:	 80.47%
Length	32	alignment	4/5:	-2.03%
Length	64	alignment	0/0:	 98.29%
Length	64	alignment	0/0:	 102.75%
Length	64	alignment	0/0:	 140.99%
Length	64	alignment	0/0:	 142.60%
Length	64	alignment	0/0:	 129.61%
Length	64	alignment	0/0:	 125.91%
Length	64	alignment	0/5:	 25.23%
Length	64	alignment	5/6:	 37.97%
Length	128	alignment	0/0:	 43.83%
Length	128	alignment	0/0:	 33.34%
Length	128	alignment	0/0:	 55.93%
Length	128	alignment	0/0:	 91.75%
Length	128	alignment	0/0:	 148.25%
Length	128	alignment	0/0:	 136.22%
Length	128	alignment	0/6:	 24.40%
Length	128	alignment	6/7:	 34.18%
Length	256	alignment	0/0:	 84.87%
Length	256	alignment	0/0:	 104.30%
Length	256	alignment	0/0:	 95.59%
Length	256	alignment	0/0:	 86.65%
Length	256	alignment	0/0:	 109.61%
Length	256	alignment	0/0:	 97.53%
Length	256	alignment	0/7:	 25.79%
Length	256	alignment	7/8:	 32.29%
Length	512	alignment	0/0:	 195.49%
Length	512	alignment	0/0:	 140.54%
Length	512	alignment	0/0:	 148.29%
Length	512	alignment	0/0:	 164.03%
Length	512	alignment	0/0:	 150.61%
Length	512	alignment	0/0:	 174.32%
Length	512	alignment	0/8:	 193.32%
Length	512	alignment	8/9:	 60.42%
Length	1024	alignment	0/0:	 238.38%
Length	1024	alignment	0/0:	 239.21%
Length	1024	alignment	0/0:	 247.45%
Length	1024	alignment	0/0:	 241.00%
Length	1024	alignment	0/0:	 241.49%
Length	1024	alignment	0/0:	 340.83%
Length	1024	alignment	0/9:	 64.46%
Length	1024	alignment	9/10:	 62.71%
Length	16	alignment	1/2:	 37.79%
Length	16	alignment	2/1:	 33.02%
Length	16	alignment	1/2:	 38.88%
Length	16	alignment	2/1:	 34.80%
Length	16	alignment	1/2:	 38.49%
Length	16	alignment	2/1:	 40.42%
Length	32	alignment	2/4:	 25.43%
Length	32	alignment	4/2:	 29.08%
Length	32	alignment	2/4:	 30.27%
Length	32	alignment	4/2:	-4.03%
Length	32	alignment	2/4:	 32.73%
Length	32	alignment	4/2:	-4.69%
Length	64	alignment	3/6:	-4.86%
Length	64	alignment	6/3:	 2.38%
Length	64	alignment	3/6:	-3.60%
Length	64	alignment	6/3:	 6.44%
Length	64	alignment	3/6:	-3.60%
Length	64	alignment	6/3:	 7.55%
Length	128	alignment	4/8:	 71.91%
Length	128	alignment	8/4:	 77.35%
Length	128	alignment	4/8:	 67.13%
Length	128	alignment	8/4:	 58.60%
Length	128	alignment	4/8:	 70.61%
Length	128	alignment	8/4:	 58.14%
Length	256	alignment	5/10:	 40.61%
Length	256	alignment	10/5:	 42.76%
Length	256	alignment	5/10:	 40.78%
Length	256	alignment	10/5:	 42.96%
Length	256	alignment	5/10:	 40.17%
Length	256	alignment	10/5:	 42.74%
Length	512	alignment	6/12:	 44.60%
Length	512	alignment	12/6:	 47.72%
Length	512	alignment	6/12:	 46.02%
Length	512	alignment	12/6:	 48.19%
Length	512	alignment	6/12:	 45.56%
Length	512	alignment	12/6:	 48.07%
Length	1024	alignment	7/14:	 63.23%
Length	1024	alignment	14/7:	 63.54%
Length	1024	alignment	7/14:	 63.07%
Length	1024	alignment	14/7:	 63.54%
Length	1024	alignment	7/14:	 63.18%
Length	1024	alignment	14/7:	 63.83%



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