[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <a6911ca13419af48d7170e4426cd23f22a2824f5.camel@perches.com>
Date: Tue, 31 Dec 2019 10:01:36 -0800
From: Joe Perches <joe@...ches.com>
To: Markus Elfring <Markus.Elfring@....de>,
Namjae Jeon <namjae.jeon@...sung.com>,
linux-fsdevel@...r.kernel.org
Cc: linux-kernel@...r.kernel.org, Christoph Hellwig <hch@....de>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Sungjong Seo <sj1557.seo@...sung.com>,
Valdis Klētnieks <valdis.kletnieks@...edu>,
linkinjeon@...il.com
Subject: Re: [PATCH v8 10/13] exfat: add nls operations
On Tue, 2019-12-31 at 15:23 +0100, Markus Elfring wrote:
> …
> > +++ b/fs/exfat/nls.c
> …
> > +int exfat_nls_cmp_uniname(struct super_block *sb, unsigned short *a,
> > + unsigned short *b)
> > +{
> > + int i;
> > +
> > + for (i = 0; i < MAX_NAME_LENGTH; i++, a++, b++) {
> > + if (exfat_nls_upper(sb, *a) != exfat_nls_upper(sb, *b))
>
> Can it matter to compare run time characteristics with the following
> code variant?
>
> + for (i = 0; i < MAX_NAME_LENGTH; i++) {
> + if (exfat_nls_upper(sb, a[i]) != exfat_nls_upper(sb, b[i]))
Markus, try comparing the object code produced by the compiler first,
it's likely identical.
If this is actually a performance sensitive path, it might improve
runtime by having 2 code paths to avoid the testing of
sbi->options.case_sensitive for each u16 value in the array.
Something like: (uncompiled, untested, written in email client)
static inline
unsigned short exfat_sbi_upper(struct exfat_sb_info *sbi, unsigned short a)
{
if (sbi->vol_utbl[a])
return sbi->vol_utbl[a];
return a;
}
int exfat_nls_cmp_uniname(struct super_block *sb,
unsigned short *a,
unsigned short *b)
{
int i;
struct exfat_sb_info *sbi = EXFAT_SB(sb);
if (!sbi->options.case_sensitive) {
for (i = 0; i < MAX_NAME_LENGTH; i++, a++, b++) {
if (exfat_sbi_upper(sbi, *a) != exfat_sbi_upper(sbi, *b))
return 1;
if (*a == 0x0)
return 0;
}
} else {
for (i = 0; i < MAX_NAME_LENGTH; i++, a++, b++) {
if (*a != *b)
return 1;
if (*a == 0x0)
return 0;
}
}
return 0;
}
Powered by blists - more mailing lists