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

Reply via email to