Richard Purdie <[email protected]> writes:
>> > Have you any time to look into this performance regression?
>>
>> Well, patch replaced a call to os.path.realpath() with a more accurate
>> variant honoring a sysroot. There must be more work be done to replace
>> things previously solved by the operating system with custom (python)
>> code.
>>
>> I will try to write a C implementation of oe.path.realpath() but this
>> can take some time and I do not have an idea how to integrate it into
>> oe.
>
> The issue is not an interpreted language verses C, the problem is the
> shear number of syscalls. Each isdir() and islink() call means a stat
> call into the kernel.
With
try:
- is_dir = os.path.isdir(file)
+ if assume_dir:
+ is_dir = True
+ else:
+ is_dir = os.path.isdir(file)
except:
in meta/lib/oe/path.py you should be able to reduce calls to isdir().
A
- rtarget = oe.path.realpath(path, inst_root, True, assume_dir =
True)
+ rtarget = oe.path.realpath(path, inst_root, False, assume_dir
= True)
in package.bbclass seems to be save (pkgfiles[] is filled by os.walk() so
that locations should be already physical) and might improve performance
too.
But I do not have numbers how much you can save by these changes.
Enrico
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core