spotify / XCRemoteCache

Other
830 stars 53 forks source link

overlay reader and mapper are very slowly in version 0.0.6 #79

Closed DRybochkin closed 2 years ago

DRybochkin commented 2 years ago

xcrc in versions 0.0.5 and 0.0.4 it works fine

polac24 commented 2 years ago

@DRybochkin, do you mind checking if the fix in #82 resolves that? It skips unknown vfsoverlay formats and gives a flag to turn off vfs parsing completely. it is possible that recent changes in vfs overlays introduced that regression.

You mention that 0.0.4 doesn’t have that issue. The cocoapods plugin downloads the most recent xcremotecacche binary - did you verify 0.0.4 plugin with the most recent XCRemoteCache - v0.3.4?

DRybochkin commented 2 years ago

@polac24, yes, this solves problem #82.

if commented as on the skinshot in prebuild and postbuild, then the speed will remain the same as in version 0.0.5.

image

and if you add one more value to the mapping, then this also solves problem #82, but without loss of performance

image

it would be nice to be able to add values to DependenciesMappeing and disable OverlayDependenciesRemapper via config

polac24 commented 2 years ago

Thanks @DRybochkin. That confirms that the all-products-headers.yaml has a more complex format. Do you mind sharing its content for a first target that reports a cache miss? By default it is placed in DerivedData/Build/Intermediates.noindex/{ProjectName}/Debug/{TargetName}.buid/all-product-headers.yaml. Most likely you are able to find its absolute path with log show --predicate 'sender BEGINSWITH "xcpreb"' --style compact --info --debug -last 2m, called right after a producer or consumer build (most likely both of them).

82 will add an option to disable overlay (until we resolve all issues with overlay).

I like the idea to add extra ENV that should be remapped (PROJECT_TEMP_ROOT for your case) as a config property in .rcinfo. A PR is very welcome.

polac24 commented 2 years ago

Thanks @DRybochkin. That confirms that the all-products-headers.yaml has a more complex format. Do you mind sharing its content for a first target that reports a cache miss? By default it is placed in DerivedData/Build/Intermediates.noindex/{ProjectName}/Debug/{TargetName}.buid/all-product-headers.yaml. Most likely you are able to find its absolute path with log show --predicate 'sender BEGINSWITH "xcpreb"' --style compact --info --debug -last 2m, called right after a producer or consumer build (most likely both of them).

82 will add an option to disable overlay (until we resolve all issues with overlay).

I like the idea to add extra ENV that should be remapped (PROJECT_TEMP_ROOT for your case) as a config property in .rcinfo. A PR is very welcome.

polac24 commented 2 years ago

Can you verify version 0.3.6?